从Dockerfile运行collectstatic命令



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

docker-compose up -d --build

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

os.environ['CELERY_BROKER']

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

我的Dockerfile是这样的:

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

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

最新更新