2016-05-06 58 views
3

我有一个Dockerfile拉动从GitHub的私人回购协议,通过使用用户访问令牌:在弹性提供环境变量弹性魔豆泊坞窗部署

ARG DEPLOYMENT_TOKEN 
RUN git clone https://$DEPLOYMENT_TOKEN:[email protected]/company-org/api.git /tmpapp/ 

现在,当我创建一个新的应用程序,以及环境beanstalk,当它首次尝试构建docker镜像并部署时,如何使用该访问令牌提供弹性beanstalk?

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

eb create --envvars DEPLOYMENT_TOKEN=$DEPLOYMENT_TOKEN 

那么当应用程序试图创建环境和部署,这将包括环境变量,以便建立泊坞窗图像时,它将能够从私人回购拉?

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

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

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

,因为这意味着该信息提供给任何人,反正我甚至不能确定,将工作。

我也考虑过.eexxtensions,现在正在研究这个问题。

+0

是的,它应该工作,但你为什么不干脆给它一个尝试,看看会发生什么 – dkarchmer

+0

@dkarchmer我没有,但我觉得最大的问题是,如果我要提供的建造时间ARGS然后我在Dockerfile中引用,我需要能够提供这些构建时间参数。 Dockerrunfile实际上没有任何文档,并且从我所看到的没有任何选项可以包含构建参数 – user1658296

+0

您可能希望避免以这种方式构建。相反,只需将所有代码放在dockerfile的相同位置,然后让EB部署释放所有内容。这样,您的dockerfile只需要ADD或COPY即可将文件移动到图像中 – dkarchmer

回答

0

AWS对此有一篇文章:

Microservices Service Discovery

我发现夫妇这可能是在配置服务发现兴趣更多的资源。

  1. 使用S3
  2. 使用Consul in ECS
    1. 尽管本文描述了容器使用Consul进行DNS查询以发现其他服务的方法 - 您还可以使用Consul作为K/V store来存储机密信息。