From 580bcb704f6e073a3e7ca9aa4645e56224724cd1 Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Sun, 29 Jan 2023 11:02:30 -0600 Subject: [PATCH] added nginx with supervisor so much suffering occurred here. Let's hope it was worth it. --- Dockerfile | 37 +++++++++++++++++++++++++++++-------- flask.conf | 9 +++++++++ gunicorn.conf | 3 +++ supervisord.conf | 19 +++++++++++++++++++ 4 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 flask.conf create mode 100644 gunicorn.conf create mode 100644 supervisord.conf diff --git a/Dockerfile b/Dockerfile index 1b45ca9..a9a6b50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,34 @@ -FROM docker.io/python:3.8-buster +FROM ubuntu:lunar LABEL maintainer="Andrew Simonson " -WORKDIR /app -ADD ./src /app +ENV DEBIAN_FRONTEND noninteractive -COPY . . +RUN apt-get update +RUN apt-get install -y python3-pip nginx gunicorn supervisor -RUN apt-get -yq update && \ - pip install --no-cache-dir -r ./src/requirements.txt -WORKDIR /app/src +# Setup flask application +RUN mkdir -p /deploy/app +COPY src /deploy/app +RUN pip install -r /deploy/app/requirements.txt -CMD [ "gunicorn", "--bind", "0.0.0.0:8080", "app:app"] \ No newline at end of file +# Setup nginx +RUN rm /etc/nginx/sites-enabled/default +COPY flask.conf /etc/nginx/sites-available/ +RUN ln -s /etc/nginx/sites-available/flask.conf /etc/nginx/sites-enabled/flask.conf && \ + echo "daemon off;" >> /etc/nginx/nginx.conf + +# Setup supervisord +RUN mkdir -p /var/log/supervisor +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY gunicorn.conf /etc/supervisor/conf.d/gunicorn.conf + +# Permissions +# RUN adduser --disabled-password --gecos '' supervisor && \ +RUN chmod -R 777 /var/* && \ + chown -R root /var/* + +# Entrypoint +USER root + +# Start processes +CMD ["/usr/bin/supervisord"] diff --git a/flask.conf b/flask.conf new file mode 100644 index 0000000..449eab3 --- /dev/null +++ b/flask.conf @@ -0,0 +1,9 @@ +server { + listen 8080; + + location / { + proxy_pass http://localhost:5000/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} diff --git a/gunicorn.conf b/gunicorn.conf new file mode 100644 index 0000000..6412df9 --- /dev/null +++ b/gunicorn.conf @@ -0,0 +1,3 @@ +[program:gunicorn] +command=/usr/bin/gunicorn app:app -b localhost:5000 +directory=/deploy/app diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..1ff0908 --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,19 @@ +[supervisord] +nodaemon=true +redirect_stderr=true +stdout_logfile=/dev/null +username = dummy +password = dummy + +[program:nginx] +command=/usr/sbin/nginx +redirect_stderr=true +stdout_logfile=/dev/null + +[unix_http_server] +username = dummy +password = dummy + +[supervisorctl] +username = dummy +password = dummy \ No newline at end of file