From db133e75dbcd4845f07e85df91a9d61711a5892f Mon Sep 17 00:00:00 2001 From: Raymond Tau Date: Tue, 19 Mar 2019 08:45:33 +0800 Subject: [PATCH 1/2] Reduce docker image layers --- Dockerfile.autobuild | 54 ++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/Dockerfile.autobuild b/Dockerfile.autobuild index 42dfba6..7619fb1 100644 --- a/Dockerfile.autobuild +++ b/Dockerfile.autobuild @@ -14,31 +14,45 @@ # Base system is the LTS version of Ubuntu. FROM python:3.6-stretch -RUN groupadd -g 2300 tmpgroup && usermod -g tmpgroup www-data && groupdel www-data && groupadd -g 1000 www-data && usermod -g www-data www-data && usermod -u 1000 www-data && groupdel tmpgroup +RUN groupadd -g 2300 tmpgroup \ + && usermod -g tmpgroup www-data \ + && groupdel www-data \ + && groupadd -g 1000 www-data \ + && usermod -g www-data www-data \ + && usermod -u 1000 www-data \ + && groupdel tmpgroup \ +# + && mkdir -p /srv/www/pinry/logs \ +# + && mkdir /data \ + && chown -R www-data:www-data /data \ +# + && mkdir -p /var/log/gunicorn \ + && apt-get update \ + && apt-get -y install nginx nginx-extras pwgen \ + && rm -rf /var/lib/apt/lists/* -RUN apt-get update -RUN apt-get -y install nginx nginx-extras pwgen +RUN pip --no-cache-dir install pipenv gunicorn -RUN mkdir -p /srv/www/; cd /srv/www/; git clone https://github.com/pinry/pinry.git -RUN mkdir /srv/www/pinry/logs; mkdir /data -RUN cd /srv/www/pinry && pip install pipenv && pipenv install --three --system -RUN pip install gunicorn +COPY Pipfile* /srv/www/pinry/ + +RUN cd /srv/www/pinry \ + && pipenv install --three --system --clear + +COPY . /srv/www/pinry/ # Fix permissions -RUN chown -R www-data:www-data /srv/www - +RUN chown -R www-data:www-data /srv/www \ + && cd /srv/www/pinry \ + && python manage.py collectstatic --noinput + # Load in all of our config files. -ADD docker-contents/nginx/nginx.conf /etc/nginx/nginx.conf -ADD docker-contents/nginx/sites-enabled/default /etc/nginx/sites-enabled/default - -# Fix permissions -RUN mkdir /scripts/ -ADD docker-contents/scripts/* /scripts/ -RUN chown -R www-data:www-data /data -RUN mkdir /var/log/gunicorn +ADD docker/nginx/nginx.conf /etc/nginx/nginx.conf +ADD docker/nginx/sites-enabled/default /etc/nginx/sites-enabled/default +ADD docker/scripts/* /scripts/ # 80 is for nginx web, /data contains static files and database /start runs it. -expose 80 -volume ["/data"] -cmd ["/scripts/start.sh"] +EXPOSE 80 +VOLUME ["/data"] +CMD ["/scripts/start.sh"] From 0a7cd32b35ab0f95c67760d271330addc60543ec Mon Sep 17 00:00:00 2001 From: Raymond Tau Date: Tue, 26 Mar 2019 08:07:32 +0800 Subject: [PATCH 2/2] Ignore files not related to Docker image during build To reduce the size of context sent to Docker daemon --- .dockerignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..53e5f1f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git +.gitignore +.dockerignore +Dockerfile* +.flake8 +.travis.yml +doc