为弹性beanstalk docker部署提供环境变量

时间:2016-05-06 08:27:59

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

我有一个Dockerfile,通过使用用户访问令牌从github提取私人仓库:

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

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

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

eb create --envvars DEPLOYMENT_TOKEN=$DEPLOYMENT_TOKEN

然后当应用程序尝试创建环境并进行部署时,它将包含环境变量,以便在构建docker镜像时能够从私有仓库中提取?

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

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

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

因为这意味着任何人都可以获得信息,而且我甚至不确定这些信息是否可行。

我也考虑过.ebextensions,现在正在调查。

1 个答案:

答案 0 :(得分:0)

AWS有一篇文章:

Microservices Service Discovery

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

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