【问题标题】:Dockerfile - how do I pass passwords from a file into ENV variables?Dockerfile - 如何将密码从文件传递到 ENV 变量?
【发布时间】:2017-03-04 20:42:28
【问题描述】:

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

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

【问题讨论】:

    标签: django docker dockerfile


    【解决方案1】:

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

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

    web:
        container_name: web
        env_file: .env
    

    【讨论】:

    • 非常感谢您的回复!我试过这样做,但不幸的是,如果我在 docker-compose 中指定 env_file,则在构建过程中无法访问变量。我想运行迁移并从 Dockerfile 启动服务器,但它不起作用....
    • 哦,没关系,我已经弄清楚出了什么问题!我需要在构建完成后使用 CMD 运行迁移,而不是尝试在构建期间使用 RUN 运行它们。
    【解决方案2】:

    如果您使用的是 Chef,最佳和预期的做法是使用 Chef 数据包——请参阅 https://docs.chef.io/data_bags.html

    Databags 允许您以加密形式将这些密钥提交到您的 repo;部署后,它们将被解密并可用于您的环境文件。

    除了使用 chef 之外,使用 compose 和收敛的海报提到的选项是你最好的选择。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2022-10-09
      • 2020-10-29
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2018-04-09
      • 2018-02-23
      • 2018-12-23
      相关资源
      最近更新 更多