Skip to content

Instantly share code, notes, and snippets.

@bukowa
Created March 13, 2023 19:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bukowa/111ba901b4a4d3666acee023b6cd865e to your computer and use it in GitHub Desktop.
Save bukowa/111ba901b4a4d3666acee023b6cd865e to your computer and use it in GitHub Desktop.
django Dockerfile
ARG PYTHON_VERSION="3.11"
FROM python:${PYTHON_VERSION}-slim as builder
ENV PYTHONUNBUFFERED 1
# todo HEALTHCHECK
# https://docs.docker.com/engine/reference/builder/#healthcheck
RUN apt-get update \
&& apt-get install -y \
wait-for-it \
gettext \
make \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /code
RUN mkdir -p \
/code/data/db \
/code/data/logs \
/code/data/media \
/code/data/static
VOLUME /code/data/db
VOLUME /code/data/logs
VOLUME /code/data/media
VOLUME /code/data/static
RUN groupadd -g 32987 django
RUN useradd -m -g 32987 -u 32987 django && \
chown -R django:django /code/ /var/log/
USER django
ENV PATH="/home/django/.local/bin:${PATH}"
COPY reqs/*.txt /code/reqs/
EXPOSE 8000
# PRODUCTION SETTINGS
FROM builder AS prod_settings
ENV DJANGO_SETTINGS_MODULE="conf.settings.prod"
ENV REQS_FILE="/code/reqs/production.txt"
# DEVELOPMENT SETTINGS
FROM builder AS dev_settings
ENV DJANGO_SETTINGS_MODULE="conf.settings.dev"
ENV REQS_FILE="/code/reqs/development.txt"
# PRODUCTION BUILD
FROM prod_settings AS prod
RUN pip install --no-cache-dir -r $REQS_FILE
COPY --chown=django . /code/
# timeout increased due slow loading of pyparsing
CMD ["bash", "-c", "python manage.py collectstatic --no-input && python manage.py migrate && gunicorn -c python:conf.gunicorn"]
# DEVELOPMENT BUILD
FROM dev_settings AS dev
# Add git required by coveralls
RUN pip install --no-cache-dir -r $REQS_FILE
COPY --chown=django . /code/
CMD ["bash", "-c", "python manage.py collectstatic --no-input && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment