From dfd30f5eae33a41866e41bc724c9ab6d2bad63bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20M=C3=A4der?= Date: Wed, 12 Jun 2019 17:53:35 +0200 Subject: [PATCH] Explain caching strategy in Dockerfile comments --- Dockerfile | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1c0f053..a423acf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,26 +29,34 @@ RUN pip install \ # django-rq is used for webhooks django-rq -WORKDIR /opt - ARG BRANCH=master + +WORKDIR /tmp + +# As the requirements don't change very often, +# and as they take some time to compile, +# we try to cache them very agressively. ARG REQUIREMENTS_URL=https://raw.githubusercontent.com/digitalocean/netbox/$BRANCH/requirements.txt ADD ${REQUIREMENTS_URL} requirements.txt RUN pip install -r requirements.txt +# Cache bust when the upstream branch changes: +# ADD will fetch the file and check if it has changed +# If not, Docker will use the existing build cache. +# If yes, Docker will bust the cache and run every build step from here on. ARG REF_URL=https://api.github.com/repos/digitalocean/netbox/contents?ref=$BRANCH ADD ${REF_URL} version.json +WORKDIR /opt + ARG URL=https://github.com/digitalocean/netbox/archive/$BRANCH.tar.gz RUN wget -q -O - "${URL}" | tar xz \ && mv netbox* netbox -WORKDIR /opt/netbox - COPY docker/configuration.docker.py /opt/netbox/netbox/netbox/configuration.py COPY configuration/gunicorn_config.py /etc/netbox/config/ COPY docker/nginx.conf /etc/netbox-nginx/nginx.conf -COPY docker/docker-entrypoint.sh docker-entrypoint.sh +COPY docker/docker-entrypoint.sh /opt/netbox/docker-entrypoint.sh COPY startup_scripts/ /opt/netbox/startup_scripts/ COPY initializers/ /opt/netbox/initializers/ COPY configuration/configuration.py /etc/netbox/config/configuration.py