将环境variables传递给Docker容器
目前使用Elastic Beanstalk来运行Docker容器,我需要将重要的信息作为环境variables传递给我的容器。
我目前的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到我的beanstalk实例,然后获取环境variables的内容,我可以看到他们没有初始化:
[ec2-user@myip ~]$ 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
我如何在我的容器中设置环境variables? Dockerrun.aws.json似乎不适合我。
单个容器的Dockerrun.aws.json中不允许使用“environment”字段。
但是,您可以使用以下过程在.config文件中指定环境variables(有关更多信息,请参阅文档 ):
- 创build一个文件夹.ebextensions
- 在文件夹中创build一个.config文件
- 填写configuration文件:
option_settings: - option_name:RABBITMQ_HOST 值:RABBITMQ_HOST - option_name:RABBITMQ_PASSWORD 值:RABBITMQ_PASSWORD - option_name:RABBITMQ_USER 值:RABBITMQ_USER - option_name:RABBITMQ_VHOST 值:RABBITMQ_VHOST - option_name:ELASTICSEARCH_HOST 值:ELASTICSEARCH_HOST - option_name:ELASTICSEARCH_PASSWORD 值:ELASTICSEARCH_PASSWORD - option_name:ELASTICSEARCH_PORT 价值:ELASTICSEARCH_PORT - option_name:ELASTICSEARCH_PROTOCOL 值:ELASTICSEARCH_PROTOCOL - option_name:ELASTICSEARCH_USER 值:ELASTICSEARCH_USER
- 将.ebextensions文件和Dockerrun.aws.json一起压缩并上传到Beanstalk
- 将Elastic Beanstalkconfiguration更改为Docker
- AWS多容器Docker环境 – 不要启动
- Elastic Beanstalk单容器泊坞窗 – 使用awslogslogging驱动程序
- 什么导致EB cli将文件名称1(app-123456-654321.zip)与文件名称2(9f1b.zip)打包在一起?
- 弹性beanstalk泊坞窗应用程序无法连接到MySQL
- Docker在AWS Elastic Beanstalk上的Docker
- 在shell脚本中的脚本不在docker中执行
- 使用预configuration的Docker容器进行Elastic Beanstalk Django部署
- 用boto3创buildElastic Beanstalk Docker环境