【问题标题】:Provide environment variables to elastic beanstalk docker deployment为弹性beantalk docker部署提供环境变量
【发布时间】:2016-09-01 06:01:23
【问题描述】:

我有一个 Dockerfile,它通过使用用户访问令牌从 github 拉取私有 repo:

ARG DEPLOYMENT_TOKEN
RUN git clone https://$DEPLOYMENT_TOKEN:x-oauth-basic@github.com/company-org/api.git /tmpapp/

现在,当我在弹性 beantalk 中创建新应用程序和环境时,如何在弹性 beantalk 首次尝试构建 docker 映像和部署时为它提供该访问令牌?

这可以传递给 eb cli 命令 eb create 吗?

eb create --envvars DEPLOYMENT_TOKEN=$DEPLOYMENT_TOKEN

那么当应用程序尝试创建环境和部署时,它会包含环境变量,以便在构建 docker 映像时能够从私有 repo 中拉取?

我知道 eb setenv 允许您在成功部署后设置环境变量,但我想为 docker 构建过程执行此操作。

我不想通过使用容器描述中的环境键将访问令牌放入 Dockerrun 文件中。

{
  "containerDefinitions": [
    {
      "name": "myContainer",
      "image": "something",
      "environment": [
        {
          "name": "MY_DB_PASSWORD",
          "value": "password"
        }
      ],

因为这意味着任何人都可以使用信息,而且我什至不确定这是否可行。

我也考虑过 .ebextensions,现在正在研究。

【问题讨论】:

  • 是的,它应该可以工作,但你为什么不试试看会发生什么
  • @dkarchmer 我做了,但我发现的最大问题是,如果我要提供构建时间参数,然后在 Dockerfile 中引用,我需要能够提供这些构建时间参数。 Dockerrunfile,实际上并没有任何文档,而且据我所见,没有任何选项可以包含构建参数
  • 您可能希望避免以这种方式构建。相反,只需将所有代码与 dockerfile 放在同一个位置,然后让 EB deploy 发布所有内容。这样,您的 dockerfile 只需要 ADD 或 COPY 即可将文件移动到映像中
  • 当硬编码到 Dockerfile 本身时,构建参数可能过于敏感

标签: amazon-web-services docker amazon-elastic-beanstalk


【解决方案1】:

AWS 对此有一篇文章:

Microservices Service Discovery

我发现了更多可能对配置服务发现感兴趣的资源。

  1. 使用S3
  2. 使用Consul in ECS
    1. 虽然这篇文章描述了一种容器使用 Consul 进行 DNS 查询以发现其他服务的方法 - 您也可以使用 Consul 作为K/V store 来存储机密信息。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 2017-01-17
    • 2020-12-16
    • 2020-12-05
    • 2015-10-10
    • 2020-02-13
    • 2015-12-05
    • 2017-12-18
    • 2019-04-14
    相关资源
    最近更新 更多