在Elastic Beanstalk上设置Docker容器主机名
我想手动设置在AWS Elastic Beanstalk上部署的Docker容器的主机名。 你可以在docker run -h HOSTNAME
时候设置一个容器的主机名,但是我不知道如何(或者甚至是)将自定义parameter passing给docker run
命令。
Dockerrun.aws.json文件似乎是一个可能的候选人,但没有任何文件化的按键,我想要的。
有谁知道这是可能的吗?
据我所知,这是不支持开箱即用。
这里可能的破解是利用EB糟糕的环境variablesparsing。 您可以设置一个环境variables,例如:
PARAM1=dummy -h MYHOSTNAME
EB不会引用参数,所以-h
部分将被embedded到docker run命令中。 我没有自己尝试。
另一个select是创build一个ebextension
文件来修补/opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh
脚本,并在其中注入-h MYHOST
行。
您可以通过将其定义为环境variables来设置容器的主机名。
HOSTNAME=your-name
如果您有多个实例,则使用下一个脚本修补旧平台,但可以将其移植到新平台。 .ebextensions/01-docker-hostname.config
示例:
files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/04a_set_hostname.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash hostname $(hostname -f | cut -d"." -f1,2) sed -i "s/docker run -d \\\/docker run -d -h $(hostname) \\\/" /opt/elasticbeanstalk/hooks/appdeploy/enact/04run.sh
正如你看到我们的脚本总是修补运行脚本。 EB按文件名顺序运行脚本。 所以你应该确保你的脚本在运行脚本之前运行。
- 将Elastic Beanstalkconfiguration更改为Docker
- Docker主机的Elastic Beanstalk环境variables
- 通过awsebcli在Elastic Beanstalk(多容器Docker)中使用自定义的AMI
- Amazon CloudWatch的Elastic Beanstalk Docker
- 如何自定义Elastic Beanstalk上的docker run命令?
- 失败(404错误)通过AWS EBS泊坞窗环境中的Nginx访问Amazon Linux API泊坞窗服务
- 在Elastic Beanstalk上部署Docker环境
- AWS ElasticBeanstalk Docker:由于ERROR:JSONDecodeError,eb本地运行崩溃
- Docker在Multicontainer Elastic Beanstalk中编写env_file