diff --git a/Dockerfile b/Dockerfile index 3927153..0b2bfaf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,12 @@ -FROM node:8 as ngbuild - -WORKDIR /data/ - -COPY src/frontend /data/ -RUN yarn install --frozen-lockfile -RUN yarn build --no-progress - FROM avatao/ubuntu:16.04 -ENV TFW_WEB_PORT=4242 -ENV TFW_LOGIN_APP_PORT=6666 -ENV TFW_PUBLIC_PORT=8888 -ENV TFW_SUPERVISOR_HTTP_PORT=9001 - -EXPOSE ${TFW_PUBLIC_PORT} - -ENV TFW_EVENT_HANDLERS_DIR="/opt/event_handlers" -ENV TFW_APP_DIR="/srv/app" -ENV TFW_FRONTEND_DIR="/srv/frontend" -ENV TFW_LOGIN_APP_DIR="/tmp/source_code_server" -ENV TFW_LIB_DIR="/usr/local/lib/" - -ENV TFW_SUPERVISORD_CONF="/etc/supervisor/supervisord.conf" - -RUN apt-get update && \ +RUN curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - &&\ + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - &&\ + echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list &&\ + apt-get update &&\ apt-get install -qy \ + nodejs \ + yarn \ supervisor \ libzmq5 \ nginx \ @@ -36,37 +18,55 @@ RUN apt-get update && \ libreadline-dev \ libsqlite3-dev -COPY src/nginx /etc/nginx +WORKDIR /data/ +COPY src/frontend /data/ +RUN yarn install --frozen-lockfile +RUN yarn build --no-progress +USER ${AVATAO_USER} +WORKDIR /home/${AVATAO_USER} +COPY .pyenvrc . +# no GitHub releases are available, so current tip of head is hardcoded to avoid surprises +ARG PYTHON_VERSION="3.6.4" +ARG PYENV_INSTALLER_URL="https://raw.githubusercontent.com/pyenv/pyenv-installer/78cfd4d/bin/pyenv-installer" +ARG PYENV_INSTALLER_HASH=9509348b828f0564358fff456f7f693dd9ace351dc3f240854d7685ad8a8e1dd +RUN curl -fSL -o pyenv-installer ${PYENV_INSTALLER_URL} &&\ + echo "${PYENV_INSTALLER_HASH} *pyenv-installer" | sha256sum -c - &&\ + bash pyenv-installer &&\ + rm pyenv-installer &&\ + echo "source $HOME/.pyenvrc" >> .bashrc &&\ + . $HOME/.pyenvrc &&\ + pyenv install ${PYTHON_VERSION} &&\ + pyenv global ${PYTHON_VERSION} &&\ + pip install tornado pyzmq transitions + +ENV TFW_WEB_PORT=4242 +ENV TFW_LOGIN_APP_PORT=6666 +ENV TFW_PUBLIC_PORT=8888 +ENV TFW_SUPERVISOR_HTTP_PORT=9001 +ENV TFW_EVENT_HANDLERS_DIR="/opt/event_handlers" +ENV TFW_APP_DIR="/srv/app" +ENV TFW_FRONTEND_DIR="/srv/frontend" +ENV TFW_LOGIN_APP_DIR="/tmp/source_code_server" +ENV TFW_LIB_DIR="/usr/local/lib/" +ENV TFW_SUPERVISORD_CONF="/etc/supervisor/supervisord.conf" +ENV PYTHONPATH=${TFW_LIB_DIR} + +USER root +COPY src/nginx /etc/nginx RUN chown -R ${AVATAO_USER}: /var/log/nginx /var/lib/nginx && \ # nginx runs as a regular user, and can't write to /run sed -i 's#pid /run/nginx.pid;#pid /tmp/nginx.pid;#g' /etc/nginx/nginx.conf && \ envsubst "$(printenv | cut -d= -f1 | grep TFW_ | sed -e 's/^/$/g')" \ - < /etc/nginx/sites-available/default > /etc/nginx/sites-available/default + < /etc/nginx/sites-available/default > /etc/nginx/sites-available/default && \ + mv /data/dist ${TFW_FRONTEND_DIR} USER ${AVATAO_USER} - WORKDIR /home/${AVATAO_USER} -COPY .pyenvrc . -ARG PYTHON_VERSION="3.6.4" -# no GitHub releases are available, so current tip of head is hardcoded to avoid surprises -ARG PYENV_INSTALLER_URL="https://raw.githubusercontent.com/pyenv/pyenv-installer/78cfd4d/bin/pyenv-installer" -ARG PYENV_INSTALLER_HASH=9509348b828f0564358fff456f7f693dd9ace351dc3f240854d7685ad8a8e1dd -RUN curl -fSL -o pyenv-installer ${PYENV_INSTALLER_URL} && \ - echo "${PYENV_INSTALLER_HASH} *pyenv-installer" | sha256sum -c - && \ - bash pyenv-installer && \ - rm pyenv-installer && \ - echo "source $HOME/.pyenvrc" >> .bashrc && \ - . $HOME/.pyenvrc && \ - pyenv install ${PYTHON_VERSION} && \ - pyenv global ${PYTHON_VERSION} && \ - pip install tornado pyzmq transitions - -ENV PYTHONPATH=${TFW_LIB_DIR} -COPY lib $TFW_LIB_DIR +COPY lib ${TFW_LIB_DIR} COPY supervisord.conf ${TFW_SUPERVISORD_CONF} COPY src/app ${TFW_APP_DIR} COPY src/event_handlers ${TFW_EVENT_HANDLERS_DIR} -COPY --from=ngbuild /data/dist ${TFW_FRONTEND_DIR} +EXPOSE ${TFW_PUBLIC_PORT} CMD . "$HOME/.pyenvrc" && exec supervisord --nodaemon