Django Dockerfile-如何将密码从文件传递到环境变量?

Django Dockerfile-如何将密码从文件传递到环境变量?,django,docker,dockerfile,Django,Docker,Dockerfile,我想将所有机密环境变量—POSTGRES_密码、SECRET_密钥等—存储在一个单独的文件中,这样它们就不会被提交到github 如何将这些变量包含到Dockerfile中,以便我可以使用它们来运行迁移和类似的操作?如果您使用的是Chef,最好的做法是使用Chef数据包--请参阅 数据包允许您以加密形式将这些密钥提交给您的回购协议;部署后,它们将被解密并可用于您的环境文件 除了使用chef,海报中提到的使用撰写和聚合的选项是您的最佳选择。如果您使用的是chef,最佳和预期的做法是使用chef数据

我想将所有机密环境变量—POSTGRES_密码、SECRET_密钥等—存储在一个单独的文件中,这样它们就不会被提交到github


如何将这些变量包含到Dockerfile中,以便我可以使用它们来运行迁移和类似的操作?

如果您使用的是Chef,最好的做法是使用Chef数据包--请参阅

数据包允许您以加密形式将这些密钥提交给您的回购协议;部署后,它们将被解密并可用于您的环境文件


除了使用chef,海报中提到的使用
撰写
和聚合的选项是您的最佳选择。

如果您使用的是chef,最佳和预期的做法是使用chef数据包--请参阅

数据包允许您以加密形式将这些密钥提交给您的回购协议;部署后,它们将被解密并可用于您的环境文件


除了使用chef,海报中提到的使用
compose
和converge的选项是您最好的选择。

如果您通过CLI运行每个容器。。您应该以字符串形式将变量作为参数传递,格式为
-e“foo=bar”

我建议的更好的方法是使用类似于
docker compose
(我推荐)的工具进行部署。您可以在
.env
文件中设置所有密码,并在docker compose文件中引用它们

web:
    container_name: web
    env_file: .env

如果您正在通过CLI运行每个容器。。您应该以字符串形式将变量作为参数传递,格式为
-e“foo=bar”

我建议的更好的方法是使用类似于
docker compose
(我推荐)的工具进行部署。您可以在
.env
文件中设置所有密码,并在docker compose文件中引用它们

web:
    container_name: web
    env_file: .env

非常感谢您的回复!我已经尝试过这样做,但不幸的是,如果我在docker compose中指定env_文件,则在构建过程中无法访问变量。我想从Dockerfile运行迁移并启动服务器,但它不起作用……哦,没关系,我已经找出了问题所在!我需要在构建完成后使用CMD运行迁移,而不是在构建过程中使用run运行迁移。非常感谢您的回复!我已经尝试过这样做,但不幸的是,如果我在docker compose中指定env_文件,则在构建过程中无法访问变量。我想从Dockerfile运行迁移并启动服务器,但它不起作用……哦,没关系,我已经找出了问题所在!我需要在构建完成后使用CMD运行迁移,而不是在构建期间使用run运行迁移。