Files
@ ddae8d91f682
Branch filter:
Location: symposion_app/docker/Dockerfile - annotation
ddae8d91f682
1.6 KiB
text/x-dockerfile-config
Improved handling of static/build and css generation
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?
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?
bf1f42dab9d0 fbdf841f334c fbdf841f334c fbdf841f334c e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff bf1f42dab9d0 e23ffc48aeff fbdf841f334c fbdf841f334c fbdf841f334c fbdf841f334c fbdf841f334c fbdf841f334c fbdf841f334c fbdf841f334c e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff e23ffc48aeff 2580584597b5 2580584597b5 ddae8d91f682 ddae8d91f682 ddae8d91f682 1a54b0f9d619 1a54b0f9d619 1a54b0f9d619 1a54b0f9d619 f6768e19d8f0 f6768e19d8f0 f6768e19d8f0 f6768e19d8f0 af5fec11ff33 af5fec11ff33 af5fec11ff33 af5fec11ff33 af5fec11ff33 af5fec11ff33 8f28a444a229 | 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"]
|