diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..42a4e395c33e47800b8dc4a52b55e5a6abd38e5f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.env +.git +*.pyc +*.egg +*.egg-info +.cache +.pytest_cache diff --git a/Dockerfile b/Dockerfile index 188f09f8e84d626dd419073cc2b33c7e78cc17c9..8c015f2b22350f1385ae55e40da81a185bf52a28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,18 @@ -FROM python:3.6 +FROM python:3.7-alpine RUN mkdir /code WORKDIR /code -ADD requirements.txt /code/ +COPY requirements.txt ./ -RUN apt-get update && apt-get install -y --no-install-recommends \ - nginx \ - supervisor \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && apt-get autoremove -y --purge +RUN apk add --no-cache nginx supervisor libpq \ + && apk add --no-cache --virtual=.build-deps build-base postgresql-dev libffi-dev \ + && pip install -r requirements.txt \ + && pip install gunicorn \ + && apk del .build-deps +RUN rm /etc/nginx/conf.d/default.conf \ + && echo "daemon off;" >> /etc/nginx/nginx.conf -COPY ./requirements.txt /code/requirements.txt -RUN pip install -r requirements.txt && \ - pip install gunicorn && \ - rm /etc/nginx/sites-enabled/default && \ - echo "daemon off;" >> /etc/nginx/nginx.conf - -ADD . /code/ +COPY . ./ RUN DATABASE_URL=none SECRET_KEY=xxx python manage.py collectstatic --noinput @@ -25,8 +20,6 @@ COPY conf/supervisor.conf /etc/supervisor/conf.d/supervisor.conf COPY conf/nginx.conf /etc/nginx/conf.d/openlobby-server.conf COPY conf/entrypoint.sh ./ -WORKDIR /code - EXPOSE 8010 ENTRYPOINT ["./entrypoint.sh"] diff --git a/conf/entrypoint.sh b/conf/entrypoint.sh old mode 100644 new mode 100755 index 1d11868c922336fcfdc03490ee15c8948ff9f2a5..0f783eb8fb15815145ce10f915a5cb074bb26caf --- a/conf/entrypoint.sh +++ b/conf/entrypoint.sh @@ -1,9 +1,11 @@ -#!/bin/bash +#!/bin/sh # migrate python manage.py migrate # Create log dirs and files -mkdir -p $( dirname $(cat /etc/supervisor/supervisord.conf | grep logfile= | grep "\.log" | sed s/.*logfile=// ) ) -touch $( cat /etc/supervisor/supervisord.conf | grep logfile= | grep "\.log" | sed s/.*logfile=// ) -exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf --nodaemon \ No newline at end of file +mkdir -p $( dirname $(cat /etc/supervisor/conf.d/supervisor.conf | grep logfile= | grep "\.log" | sed s/.*logfile=// ) ) +touch $( cat /etc/supervisor/conf.d/supervisor.conf | grep logfile= | grep "\.log" | sed s/.*logfile=// ) +mkdir /run/nginx + +exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf --nodaemon diff --git a/conf/supervisor.conf b/conf/supervisor.conf index eaf08f13b5651253ff8097d650e6c47c131364ab..b716c20ed98010dfc4f3638069781a1b74101dd6 100644 --- a/conf/supervisor.conf +++ b/conf/supervisor.conf @@ -14,10 +14,9 @@ stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 - [supervisord] -logfile = /var/log/supervisor/supervisord.log -logfile_maxbytes = 10MB -logfile_backups = 5 -loglevel = info -pidfile = /var/run/supervisord.pid \ No newline at end of file +logfile=/var/log/supervisor/supervisord.log +logfile_maxbytes=10MB +logfile_backups=5 +loglevel=info +pidfile=/var/run/supervisord.pid diff --git a/requirements.in b/requirements.in index 443ff41770ea32e01a9094f1d79c881e7cff8081..c240013d55ad6b3b5cb83a0bec02cf1269361c3f 100644 --- a/requirements.in +++ b/requirements.in @@ -1,3 +1,4 @@ +psycopg2-binary Django graphene graphene-django @@ -9,5 +10,4 @@ pyjwt iso8601 arrow bleach -psycopg2 dsnparse diff --git a/requirements.txt b/requirements.txt index 37a09a9513a7cae20e3a2aa5b8f264b15765fe14..f6eb71815d1a9d98c931a14e1d84719c3ab338a0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ mako==1.0.7 # via oic markupsafe==1.0 # via mako oic==0.14.0 promise==2.2.1 # via graphene, graphene-django, graphql-core, graphql-relay -psycopg2==2.7.5 +psycopg2-binary==2.7.5 pycparser==2.19 # via cffi pycryptodomex==3.6.6 # via oic, pyjwkest pyjwkest==1.4.0 # via oic