我想将所有机密环境变量 - POSTGRES_PASSWORD,SECRET_KEY等存储在一个单独的文件中,以便它们不会被提交给github。Dockerfile - 如何将密码从文件传递到ENV变量?
如何将这些变量包含到Dockerfile中,以便我可以使用它们来运行迁移和类似的东西?
我想将所有机密环境变量 - POSTGRES_PASSWORD,SECRET_KEY等存储在一个单独的文件中,以便它们不会被提交给github。Dockerfile - 如何将密码从文件传递到ENV变量?
如何将这些变量包含到Dockerfile中,以便我可以使用它们来运行迁移和类似的东西?
如果通过CLI运行每个容器,则应该将变量作为参数传递为格式为-e "foo=bar"
的字符串。
我可以建议的更好的方法是,如果您使用类似docker-compose
(我推荐)进行部署。您可以将所有密码设置为.env
文件,并在docker-compose文件中引用它们。
web:
container_name: web
env_file: .env
如果你使用的厨师,最好的和预期的做法是使用厨师数据包 - 见https://docs.chef.io/data_bags.html
Databags允许您以加密的形式提交这些键将回购;部署后,它们将被解密并可用于您的环境文件。
除了使用厨师,海报使用compose
和融合提到的选项是你最好的选择。
非常感谢您的回复!我试过这样做,但不幸的是,如果我在docker-compose中指定了env_file,那么在构建过程中变量不可访问。我想运行迁移并从Dockerfile启动一个服务器,但它不起作用.... –
哦,没关系,我已经找出了什么是错的!我需要在构建完成后使用CMD运行迁移,而不是在运行构建期间尝试运行它们。 –