【问题标题】:Running collectstatic command from Dockerfile从 Dockerfile 运行 collectstatic 命令
【发布时间】:2021-01-29 23:27:02
【问题描述】:

我的目标是在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

【问题讨论】:

    标签: django docker collectstatic


    【解决方案1】:

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

    【讨论】:

    • 嗯,这实际上解决了我的问题。所以我接受你的回答,虽然这是一个有点间接的解决方案
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多