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 从Dockerfile运行collectstatic命令_Django_Docker_Collectstatic - Fatal编程技术网

Django 从Dockerfile运行collectstatic命令

Django 从Dockerfile运行collectstatic命令,django,docker,collectstatic,Django,Docker,Collectstatic,我的目标是在Dockerfile中运行collectstatic命令,但在尝试通过运行 docker-compose up -d --build 在使用环境变量的行中,我遇到来自settings.py文件的KeyError消息,例如: os.environ['CELERY_BROKER'] 这显然是因为容器尚未构建,所以Docker对my.env文件中定义的环境变量一无所知。是否有任何命令将所有变量导入Docker? 或者在Dockerfile中运行collectstatic命令是个坏主意,

我的目标是在
Dockerfile
中运行
collectstatic
命令,但在尝试通过运行

docker-compose up -d --build
在使用环境变量的行中,我遇到来自
settings.py
文件的
KeyError
消息,例如:

os.environ['CELERY_BROKER']
这显然是因为容器尚未构建,所以Docker对my
.env
文件中定义的环境变量一无所知。是否有任何命令将所有变量导入Docker? 或者在Dockerfile中运行
collectstatic
命令是个坏主意,它应该在docker compose文件中运行?或者作为CI/CD任务的一部分

我的Dockerfile如下所示:

COPY . /app/
WORKDIR /app
RUN python manage.py collectstatic --noinput
RUN ls -la

您可能不希望在构建时设置
.env
中的环境变量,因为这些变量会被烘焙到容器映像中,因此与任何有权访问该映像的人共享。在我看来,处理这个问题的方法是用
os.environ.get(“芹菜”、“…”)
更改
os.environ['CELERY\u BROKER']
os.environ['CELERY\u BROKER']
的实例,其中第二个参数是开发环境的合理默认值。

实际上解决了我的问题。所以我接受你的答案,虽然这是一个有点间接的解决办法