ddae8d91f6
When the container is mounted, the local contents of . obscure /app/symposion_app in the image. Generally speaking, this is handy for development, as it means that local changes are detected and used immediately without needing to restart the container. However, it breaks in the specific case of the sass->css generation. Prior to this change, the css is generated only after the first time a page is hit. The generated file is placed in static/build; however, due to the obscuration, this generated file isn't visible to the running process. The next time the container is built, the pre-existing static/build directory is copied into the container as it's being built; then, later, that version is what gets served. This change adds the needed libraries to pre-generate the css as part of the image build, and runs compilescss to do this, prior to the collectstatic step. It also adds a second collectstatic into the make_dev_container script, so that the visible static/build directory should ahve the same contents as the obscured static/build directory. It also expands the .dockerignore file to make sure these files aren't copied into the image in future. I'm not sure if this is the right thing to do, as changes to this directory will be ignored, which could be confusing. Perhaps never being able to see these generated files is better?
53 lines
1.6 KiB
Docker
53 lines
1.6 KiB
Docker
FROM python:3-stretch as symposion_base
|
|
|
|
RUN set -ex \
|
|
&& apt-get update
|
|
RUN set -ex \
|
|
&& buildDeps=' \
|
|
libffi-dev \
|
|
libfreetype6-dev \
|
|
libjpeg-dev \
|
|
libwebp-dev \
|
|
libpng-dev \
|
|
liblcms2-dev \
|
|
zlib1g-dev \
|
|
libmemcached-dev \
|
|
libsasl2-dev \
|
|
' \
|
|
&& apt-get install -y git xmlsec1 \
|
|
&& apt-get install -y $buildDeps --no-install-recommends \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN set -ex \
|
|
&& pip install uwsgi
|
|
|
|
COPY constraints.txt requirements.txt /reqs/
|
|
|
|
RUN set -ex \
|
|
&& pip install --no-cache-dir -r /reqs/requirements.txt -c /reqs/constraints.txt \
|
|
&& apt-get purge -y --auto-remove $buildDeps \
|
|
&& rm -rf /usr/src/python ~/.cache
|
|
|
|
COPY . /app/symposion_app
|
|
|
|
WORKDIR /app/symposion_app
|
|
RUN set -x \
|
|
&& pip install -r vendored_requirements.txt -c /reqs/constraints.txt
|
|
RUN set -x \
|
|
&& DJANGO_SECRET_KEY=1234 STRIPE_PUBLIC_KEY=1234 STRIPE_SECRET_KEY=1234 \
|
|
DATABASE_URL="sqlite:////dev/null" python manage.py compilescss
|
|
RUN set -x \
|
|
&& DJANGO_SECRET_KEY=1234 STRIPE_PUBLIC_KEY=1234 STRIPE_SECRET_KEY=1234 \
|
|
DATABASE_URL="sqlite:////dev/null" \
|
|
python manage.py collectstatic --noinput -l -v 0
|
|
RUN set -ex \
|
|
&& cp static/build/fonts/*.ttf /usr/local/share/fonts/ \
|
|
&& fc-cache \
|
|
&& fc-list
|
|
|
|
FROM symposion_base as symposion_dev
|
|
VOLUME /app/symposion_app
|
|
CMD ["./manage.py", "runserver", "-v3", "0.0.0.0:8000"]
|
|
|
|
FROM symposion_base as symposion_prod
|
|
CMD ["/usr/local/bin/uwsgi", "--http-socket", "0.0.0.0:8000", "-b", "8192", "--wsgi-file", "pinaxcon/wsgi.py"]
|