运行 来自 Dockerfile 的 collectstatic 命令

Running collectstatic command from Dockerfile

我的目标是在 Dockerfile 中 运行 collectstatic 命令,但是当尝试通过 运行ning[=20 重建和 运行 容器时=]

docker-compose up -d --build

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

os.environ['CELERY_BROKER']

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

我的 Docker 文件如下所示:

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

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