防止 collectstatic 尝试访问数据库
Prevent collectstatic from trying to access a database
我有一个 Dockerfile
多阶段构建,我正在尝试 运行 collectstatic
获取所有静态文件并将它们复制到最终 docker 图片。
目前我没有要访问的数据库,但是当 collectstatic
试图访问一个带有虚拟值的数据库时,我收到一个错误。
在我看来,collectstatic
应该不需要访问数据库。我已经阅读了一些与此相关的问题,我认为 django 的维护者不打算更改它。
这就是为什么我需要知道是否有任何方法可以阻止对数据库的访问。
这是我的:
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"]
遗憾的是,无法阻止 collectstatic
尝试访问数据库。在某些情况下使用虚拟数据库可以解决您的问题。
如果这没有帮助,您可能必须自己实施。
我有一个 Dockerfile
多阶段构建,我正在尝试 运行 collectstatic
获取所有静态文件并将它们复制到最终 docker 图片。
目前我没有要访问的数据库,但是当 collectstatic
试图访问一个带有虚拟值的数据库时,我收到一个错误。
在我看来,collectstatic
应该不需要访问数据库。我已经阅读了一些与此相关的问题,我认为 django 的维护者不打算更改它。
这就是为什么我需要知道是否有任何方法可以阻止对数据库的访问。
这是我的:
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"]
遗憾的是,无法阻止 collectstatic
尝试访问数据库。在某些情况下使用虚拟数据库可以解决您的问题。
如果这没有帮助,您可能必须自己实施。