2

我的目标是在collectstatic里面运行命令Dockerfile,但是当尝试通过运行来重建和运行容器时

docker-compose up -d --build

我在使用环境变量的行上遇到KeyError来自settings.py文件的消息,例如:

os.environ['CELERY_BROKER']

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

我的 Dockerfile 看起来像这样:

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

1 回答 1

1

您可能不想.env在构建时设置环境变量,因为它们会被烘焙到容器映像中,因此与有权访问该映像的任何人共享。IMO,处理此问题的方法是更改os.environ['CELERY_BROKER']​​您的实例settings.pyos.environ.get("CELERY_BROKER", "...")其中第二个参数是您的开发环境的合理默认值。

于 2020-10-15T17:41:32.823 回答