【问题标题】:How to get my Bitbucket Pipeline Repo Variables to my local Docker Build?如何将我的 Bitbucket Pipeline Repo 变量添加到我的本地 Docker 构建中?
【发布时间】:2019-05-07 15:04:54
【问题描述】:

我的目标是能够在本地开发/添加功能,然后创建本地 docker 构建并使用 Bitbucket Pipeline Repo 变量创建容器。我不想在主机上或代码内部硬编码任何秘密。我正在尝试访问托管在 Bitbucket 管道存储库变量中的一些 api 密钥。

有人知道怎么做吗?我正在考虑 Dockerfile 中的一些脚本,它将在容器内创建环境变量。

【问题讨论】:

    标签: python-3.x docker bitbucket-pipelines


    【解决方案1】:

    当您使用-e 标志运行容器时,您可以将这些变量作为环境变量传递给您的容器(请参阅:this question),此时您可以使用 bitbucket 变量。当你这样做时,变量在你的 docker 容器中是可用的,但是当然你仍然必须能够在你的 python 脚本中使用它们?

    您可以像这样轻松地做到这一点:

    variable = os.environ['ENV_VARIABLE_NAME']
    

    如果您不想以纯文本形式将变量传递给这样的命令,您还可以设置一个链接到您的 python 容器的 MySQL 容器,该容器为您的应用程序提供变量。通过这种方式,所有内容都是安全的、动态的,并且除了对有权访问您的数据库的用户之外的任何地方都不可见,并且仍然可以轻松修改。设置需要更多时间,但比 .env 文件要少。

    希望对你有帮助

    【讨论】:

    • 感谢您的回答。我已经想到了,但我不想要进程列表、历史记录、日志等中的值。可能没有办法做到这一点。我可能需要一个 env 文件或使用 -e 标志传递值。
    • 我不知道这是否适合您,但我在自己的一个项目中遇到了类似的问题。我将所有密钥和秘密存储在数据库中,并从我的应用程序中查询它们。通过这种方式,所有内容都安全存储,在任何地方都不可见,您可以在需要时轻松更改它,省去 env 文件的麻烦
    • @Chris,是的,但这当然不允许您在应用程序中访问它们。我的意思更像是第二个数据库(即链接到您的 python 容器的 mysql 容器),可以查询 API 密钥:)
    • 数据库凭据不会在撰写文件中吗?
    • @Chris,是的,他们会的。但是,如果您将数据库设置为不发布任何端口,则只能从您的 python 容器或 mysql 容器本身中访问它。使用这些凭据防止任何外部访问。如果您还想使用 phpmyadmin 更改数据库,则必须确保此帐户只能从 localhost 使用,使用这些凭据限制任何外部访问
    猜你喜欢
    • 2020-12-17
    • 2015-01-05
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多