运行 来自 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.py
中 os.environ['CELERY_BROKER']
的实例更改为 os.environ.get("CELERY_BROKER", "...")
,其中第二个参数是您开发环境的合理默认值。
我的目标是在 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.py
中 os.environ['CELERY_BROKER']
的实例更改为 os.environ.get("CELERY_BROKER", "...")
,其中第二个参数是您开发环境的合理默认值。