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']
的实例,其中第二个参数是开发环境的合理默认值。实际上解决了我的问题。所以我接受你的答案,虽然这是一个有点间接的解决办法