From a4d101883e2af84816e1950d7fccf1c518d89734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Bokros?= Date: Wed, 10 Jan 2018 16:55:48 +0100 Subject: [PATCH] Use nginx to serve everything --- Dockerfile | 18 +++++++++++++++++- src/nginx/sites-available/default | 23 +++++++++++++++++++++++ supervisord.conf | 5 +++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/nginx/sites-available/default diff --git a/Dockerfile b/Dockerfile index 0ee787c..8e57e43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,11 +5,17 @@ RUN apt-get update && \ apt-get install -qy \ supervisor \ libzmq5 \ + nginx \ + # Provides envsubst + gettext-base \ # These dependencies are required to compile the bz2, readline, sqlite3 # Python packages libbz2-dev \ libreadline-dev \ - libsqlite3-dev + libsqlite3-dev && \ + 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 USER ${AVATAO_USER} @@ -43,5 +49,15 @@ 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 src/frontend/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 diff --git a/src/nginx/sites-available/default b/src/nginx/sites-available/default new file mode 100644 index 0000000..9d6e49d --- /dev/null +++ b/src/nginx/sites-available/default @@ -0,0 +1,23 @@ +server { + listen ${TFW_PUBLIC_PORT}; + server_name localhost; + proxy_connect_timeout 7d; + proxy_send_timeout 7d; + proxy_read_timeout 7d; + + location = /ws { + proxy_pass http://127.0.0.1:${TFW_WEB_PORT}; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + location /login/ { + proxy_pass http://127.0.0.1:${TFW_LOGIN_APP_PORT}; + } + + location / { + root ${TFW_FRONTEND_DIR}; + try_files $uri $uri/ index.html; + } +} diff --git a/supervisord.conf b/supervisord.conf index 09b759c..e934465 100644 --- a/supervisord.conf +++ b/supervisord.conf @@ -28,3 +28,8 @@ command=env python event_handler_main.py directory=%(ENV_TFW_LOGIN_APP_DIR)s command=env python server.py autostart=false + +[program:nginx] +command=/usr/sbin/nginx -g 'daemon off;' +autostart=true +autorestart=true