mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-27 03:54:02 +03:00
b91c70d755
## Description Following up on @webyneter attempt in #1205, which is now getting outdated, I've tried to make Gulp task runner work with Docker. There is no documentation yet, but this seems to work locally with the custom bootstrap compilation... - [x] Add a node image for local developement - [x] Proxy the django image rather than localhost in Browser sync, pass header to keep hostname - [x] Don't call the runserver command from Gulp, let docker-compose handle - [x] Update package.json & gulpfile.js templates to reduce the number of unwanted empty lines - [x] Use [multi-stage build](https://docs.docker.com/develop/develop-images/multistage-build/) in production to make sure the static assets are produced - [x] Update documentation - [x] Verify that the previous issue with static assets missing from production isn't there ## Rationale Currently, the static build isn't working nicely with Docker, extra manual setup is required. Fixes #1762
72 lines
1.8 KiB
Docker
72 lines
1.8 KiB
Docker
{% if cookiecutter.js_task_runner == 'Gulp' -%}
|
|
FROM node:10-stretch-slim as client-builder
|
|
|
|
WORKDIR /app
|
|
COPY ./package.json /app
|
|
RUN npm install && npm cache clean --force
|
|
COPY . /app
|
|
RUN npm run build
|
|
|
|
# Python build stage
|
|
{%- endif %}
|
|
FROM python:3.6-alpine
|
|
|
|
ENV PYTHONUNBUFFERED 1
|
|
|
|
RUN apk update \
|
|
# psycopg2 dependencies
|
|
&& apk add --virtual build-deps gcc python3-dev musl-dev \
|
|
&& apk add postgresql-dev \
|
|
# Pillow dependencies
|
|
&& apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
|
|
# CFFI dependencies
|
|
&& apk add libffi-dev py-cffi
|
|
|
|
RUN addgroup -S django \
|
|
&& adduser -S -G django django
|
|
|
|
# Requirements are installed here to ensure they will be cached.
|
|
COPY ./requirements /requirements
|
|
RUN pip install --no-cache-dir -r /requirements/production.txt \
|
|
&& rm -rf /requirements
|
|
|
|
COPY ./compose/production/django/entrypoint /entrypoint
|
|
RUN sed -i 's/\r//' /entrypoint
|
|
RUN chmod +x /entrypoint
|
|
RUN chown django /entrypoint
|
|
|
|
COPY ./compose/production/django/start /start
|
|
RUN sed -i 's/\r//' /start
|
|
RUN chmod +x /start
|
|
RUN chown django /start
|
|
|
|
{%- if cookiecutter.use_celery == "y" %}
|
|
COPY ./compose/production/django/celery/worker/start /start-celeryworker
|
|
RUN sed -i 's/\r//' /start-celeryworker
|
|
RUN chmod +x /start-celeryworker
|
|
RUN chown django /start-celeryworker
|
|
|
|
COPY ./compose/production/django/celery/beat/start /start-celerybeat
|
|
RUN sed -i 's/\r//' /start-celerybeat
|
|
RUN chmod +x /start-celerybeat
|
|
RUN chown django /start-celerybeat
|
|
|
|
COPY ./compose/production/django/celery/flower/start /start-flower
|
|
RUN sed -i 's/\r//' /start-flower
|
|
RUN chmod +x /start-flower
|
|
{%- endif %}
|
|
|
|
{%- if cookiecutter.js_task_runner == 'Gulp' %}
|
|
COPY --from=client-builder /app /app
|
|
{% else %}
|
|
COPY . /app
|
|
{%- endif %}
|
|
|
|
RUN chown -R django /app
|
|
|
|
USER django
|
|
|
|
WORKDIR /app
|
|
|
|
ENTRYPOINT ["/entrypoint"]
|