【问题标题】:Docker env vars + Heroku; Heroku requires ENV while local build requires ARGDocker 环境变量 + Heroku; Heroku 需要 ENV,而本地构建需要 ARG
【发布时间】:2018-12-15 00:40:02
【问题描述】:

我对 Heroku 的 Docker 容器注册表 CLI 的理解是,它是 Docker cli 的包装器。

当我在本地构建时,我会使用,例如:docker build -f Dockerfile.example --build-arg SECRET_KEY=abc。我将在我的 Dockerfile.example 中设置ARG SECRET_KEY

但是如果我想推送到heroku的docker container-registry,我发现我需要在我的Dockerfile.example中声明ENV SECRET_KEY=abc,然后运行命令heroku container:push example --recursive

为什么会这样?是什么让他们与众不同?对 ENV 进行硬编码不是不好的安全做法吗? Heroku 是否提供解决此问题的方法?

【问题讨论】:

    标签: docker heroku


    【解决方案1】:

    你可以运行类似
    heroku container:push web --arg SECRET_KEY=xxxSecret123

    这样,您不必直接在 Dockerfile 中提供信息。

    【讨论】:

    • 如果您有 heroku 评论并且不想在每次创建评论应用时都传递 arg 怎么办?
    【解决方案2】:

    配置变量(每个应用程序)会覆盖您在 Dockerfile 中硬编码的任何值。在您的 Dockerfile 中放置一个占位符值(个人收藏:notsecret)并在 Heroku UI 或 CLI 上设置实际的秘密值。

    【讨论】:

    • 你的意思是在配置变量中设置秘密?但据我了解,它们在 docker 构建期间不可用。
    • 那不行,docker 也看不到环境变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2018-03-01
    相关资源
    最近更新 更多