Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 阻止collectstatic尝试访问数据库_Django_Docker_Dockerfile_Django Cms_Collectstatic - Fatal编程技术网

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导入中的静态路径。如果它只复制文件,我会编写自己的脚本。我尝试使用虚拟数据库,但这会导致其他问题。之后,我用不同的脚本实现了类似的功能。我尝试使用虚拟数据库,但这会导致其他问题。之后,我用不同的脚本实现了类似的功能。