I have a Dockerfile
with a multi-stage build in which I'm trying to run collectstatic
to get all the static files and copy them into the final docker image.
At this moment I don't have a database to access, but as collectstatic
is trying to access one with dummy values, I get an error.
In my opinion there should be no need for collectstatic
to access a database. I have read through some Issues concerning this and I think that the maintainers of django are not planning on changing this.
That's why I need to know if there is any way to prevent this access to a database.
Here's what I have:
ARG baseImage
FROM ${baseImage} AS base
USER root
ENV DB_HOST="example" \
DB_NAME="example" \
DB_USER="example" \
DB_PASSWORD="example"
RUN python app/manage.py collectstatic --skip-checks --noinput --clear \
&& node_modules/.bin/gulp compile --destination "/tmp/staticcmp"
FROM nginx:1.11 AS cdn
COPY docker/cdn/etc/cdn-nginx.conf /etc/nginx/conf.d/default.template
COPY docker/cdn/robots.txt /usr/share/nginx/html/robots.txt
COPY docker/cdn/bin/ /usr/local/bin/
COPY --from=base /tmp/staticcmp/ /usr/share/nginx/html/static
ENV NGINX_ERROR_LOG="/dev/stdout" \
NGINX_ACCESS_LOG="/dev/stdout"
EXPOSE 8000
ENTRYPOINT ["docker-cdn-entrypoint"]
Unfortunately there is no way to prevent collectstatic
from trying to access the database. Using a dummy database in certain situations could solve your problem.
If this doesn't help you will probably have to implement it yourself.