Django 阻止collectstatic尝试访问数据库
我有一个带有多阶段构建的Django 阻止collectstatic尝试访问数据库,django,docker,dockerfile,django-cms,collectstatic,Django,Docker,Dockerfile,Django Cms,Collectstatic,我有一个带有多阶段构建的Dockerfile,我试图在其中运行collectstatic,以获取所有静态文件,并将它们复制到最终的docker映像中。 此时,我没有要访问的数据库,但当collectstatic尝试使用伪值访问一个数据库时,我得到了一个错误 在我看来,应该不需要collectstatic来访问数据库。我已经阅读了一些与此相关的问题,我认为django的维护人员不打算改变这一点。 这就是为什么我需要知道是否有任何方法可以阻止对数据库的访问 以下是我所拥有的: ARG baseIma
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
尝试访问数据库。在某些情况下使用虚拟数据库可以解决您的问题。
如果这没有帮助,您可能必须自己实现。不幸的是,没有办法阻止
collectstatic
尝试访问数据库。在某些情况下使用虚拟数据库可以解决您的问题。
如果这没有帮助,您可能必须自己实现。manage.py命令将始终检查数据库。但是collectstatic所做的只是将文件从源目录复制到输出目录——您可以自己作为脚本,甚至直接在dockerfile中实现它。@DanielRoseman这不完全正确
collectstatic
基于STATICFILES\u存储执行附加工作。在我的例子中,这是ManifestStaticFilesStorage
,它使用内容哈希添加副本,并解析模板和scss导入中的静态路径。如果它只复制文件,我会编写自己的脚本。manage.py命令将始终检查数据库。但是collectstatic所做的只是将文件从源目录复制到输出目录——您可以自己作为脚本,甚至直接在dockerfile中实现它。@DanielRoseman这不完全正确collectstatic
基于STATICFILES\u存储执行附加工作。在我的例子中,这是ManifestStaticFilesStorage
,它使用内容哈希添加副本,并解析模板和scss导入中的静态路径。如果它只复制文件,我会编写自己的脚本。我尝试使用虚拟数据库,但这会导致其他问题。之后,我用不同的脚本实现了类似的功能。我尝试使用虚拟数据库,但这会导致其他问题。之后,我用不同的脚本实现了类似的功能。