From a30c0c3fff6bb1e96a357d510532de14afd8918c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Bokros?= Date: Fri, 12 Jan 2018 14:10:30 +0100 Subject: [PATCH] Reorder Dockerfile for better caching and less layers --- Dockerfile | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/Dockerfile b/Dockerfile index 10b595c..e327641 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,21 @@ RUN yarn build --no-progress FROM avatao/ubuntu:16.04 -# Install dependencies +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 && \ apt-get install -qy \ supervisor \ @@ -20,10 +34,15 @@ RUN apt-get update && \ # Python packages libbz2-dev \ libreadline-dev \ - libsqlite3-dev && \ - chown -R ${AVATAO_USER}: /var/log/nginx /var/lib/nginx && \ + libsqlite3-dev + +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 + 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 USER ${AVATAO_USER} @@ -43,36 +62,12 @@ RUN curl -fSL -o pyenv-installer ${PYENV_INSTALLER_URL} && \ pyenv global ${PYTHON_VERSION} && \ pip install tornado pyzmq transitions -ENV TFW_WEB_PORT=4242 EXPOSE ${TFW_WEB_PORT} - -ENV TFW_LOGIN_APP_DIR="/tmp/source_code_server" -ENV TFW_LOGIN_APP_PORT=6666 - -# Copy config -ENV TFW_LIB_DIR="/usr/local/lib/" ENV PYTHONPATH=${TFW_LIB_DIR} COPY lib $TFW_LIB_DIR - -ENV TFW_SUPERVISORD_CONF="/etc/supervisor/supervisord.conf" -ENV TFW_SUPERVISOR_HTTP_PORT=9001 COPY supervisord.conf ${TFW_SUPERVISORD_CONF} - -ENV TFW_APP_DIR="/srv/app" COPY src/app ${TFW_APP_DIR} - -ENV TFW_EVENT_HANDLERS_DIR="/opt/event_handlers" COPY src/event_handlers ${TFW_EVENT_HANDLERS_DIR} - -ENV TFW_FRONTEND_DIR="/srv/frontend" COPY --from=ngbuild /data/dist ${TFW_FRONTEND_DIR} -ENV TFW_PUBLIC_PORT=8888 -EXPOSE ${TFW_PUBLIC_PORT} -COPY src/nginx /etc/nginx -USER root -RUN envsubst "$(printenv | cut -d= -f1 | grep TFW_ | sed -e 's/^/$/g')" \ - < /etc/nginx/sites-available/default > /etc/nginx/sites-available/default -USER ${AVATAO_USER} - CMD . "$HOME/.pyenvrc" && exec supervisord --nodaemon