2015-07-01 52 views
7

当前使用Elastic Beanstalk运行Docker容器,我需要将重要信息作为环境变量传递到我的容器。将环境变量传递给Docker容器

我现在Dockerrun.aws.json看起来是这样的:

{ 
    "AWSEBDockerrunVersion": "1", 
    "Image": { 
     "Name": "b2boost/rabbitelasticdockstash", 
     "Update": "true" 
    }, 
    "Ports": [ 
     { 
      "ContainerPort": "80" 
     } 
    ], 
    "environment": [ 
     { 
      "name": "RABBITMQ_HOST", 
      "value": "RABBITMQ_HOST" 
     }, 
     { 
      "name": "RABBITMQ_PASSWORD", 
      "value": "RABBITMQ_PASSWORD" 
     }, 
     { 
      "name": "RABBITMQ_USER", 
      "value": "RABBITMQ_USER" 
     }, 
     { 
      "name": "RABBITMQ_VHOST", 
      "value": "RABBITMQ_VHOST" 
     }, 
     { 
      "name": "ELASTICSEARCH_HOST", 
      "value": "ELASTICSEARCH_HOST" 
     }, 
     { 
      "name": "ELASTICSEARCH_PASSWORD", 
      "value": "ELASTICSEARCH_PASSWORD" 
     }, 
     { 
      "name": "ELASTICSEARCH_PORT", 
      "value": "ELASTICSEARCH_PORT" 
     }, 
     { 
      "name": "ELASTICSEARCH_PROTOCOL", 
      "value": "ELASTICSEARCH_PROTOCOL" 
     }, 
     { 
      "name": "ELASTICSEARCH_USER", 
      "value": "ELASTICSEARCH_USER" 
     } 
    ], 
    "Volumes": [ 
    ], 
    "Logging": "/var/log/eb-activity.log" 
} 

然而,这并不工作。当ssh方式连接到我的豆茎实例,然后获取环境变量的内容,我可以看到他们未初始化:

[[email protected] ~]$ sudo docker exec goofy_curie env 

PATH=/opt/logstash/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:bin 
HOSTNAME=HOSTNAME 
LANG=C.UTF-8 
JAVA_VERSION=7u79 
JAVA_DEBIAN_VERSION=7u79-2.5.5-1~deb8u1 
LOGSTASH_MAJOR=1.5 
LOGSTASH_VERSION=1:1.5.1-1 
HOME=/root 

如何设置环境变量在我的容器? Dockerrun.aws.json似乎不适合我。

+1

你试试这个选项:http://stackoverflow.com/questions/28298101/elastic-beanstalk-environment-variables为码头主人? –

+1

如果您不希望将信息保留在VCS上,则可以使用Web控制台。它适用于我的dockerized环境。 http://stackoverflow.com/a/17878600/1102395 – Samar

回答

9

对于单个容器,Dockerrun.aws.json中不允许使用“环境”字段。

  1. 创建一个文件夹.ebextensions
  2. 创建一个config文件:

    但是,您可以通过以下步骤(看documentation获取更多信息)指定的config文件中的环境变量该文件夹

  3. 填充配置文件:
 
option_settings: 
    - option_name: RABBITMQ_HOST 
    value: RABBITMQ_HOST 
    - option_name: RABBITMQ_PASSWORD 
    value: RABBITMQ_PASSWORD 
    - option_name: RABBITMQ_USER 
    value: RABBITMQ_USER 
    - option_name: RABBITMQ_VHOST 
    value: RABBITMQ_VHOST 
    - option_name: ELASTICSEARCH_HOST 
    value: ELASTICSEARCH_HOST 
    - option_name: ELASTICSEARCH_PASSWORD 
    value: ELASTICSEARCH_PASSWORD 
    - option_name: ELASTICSEARCH_PORT 
    value: ELASTICSEARCH_PORT 
    - option_name: ELASTICSEARCH_PROTOCOL 
    value: ELASTICSEARCH_PROTOCOL 
    - option_name: ELASTICSEARCH_USER 
    value: ELASTICSEARCH_USER 
  • 邮编.ebextensions与Dockerrun.aws.json文件一起,并上传到魔豆
  • +0

    如果你不捆绑,而是在码头集线器上指定一个图像? '.ebextensions'去哪了? – Luke

    +0

    @Luke你还需要在Dockerrun.aws.json文件中指定Docker Hub镜像吗?因此,使用Dockerrun.aws.json和.ebextensions创建一个git存储库,然后使用EB CLI轻松部署配置。 –

    相关问题