[英]Setting Docker container hostname on Elastic Beanstalk
我想手动设置在AWS Elastic Beanstalk上部署的Docker容器的主机名。 您可以在使用docker run -h HOSTNAME
旋转容器时设置主机名,但我不知道如何(甚至即使如何)将自定义参数传递给docker run
命令。
Dockerrun.aws.json文件似乎是一个可能的候选者,但是没有记录的密钥可以满足我的要求。
有人知道这是否可能吗?
据我所知,不支持此功能。
这里的一个可能的办法是利用EB对环境变量的不良解析。 您可以设置环境变量,例如:
PARAM1=dummy -h MYHOSTNAME
EB不引用参数,因此-h
部分将嵌入docker run命令中。 我自己没有尝试过。
另一个选择是创建一个ebextension
文件来修补/opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh
脚本,然后将-h MYHOST
行注入其中。
您可以通过将其定义为环境变量来设置容器的主机名。
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以文件名顺序运行脚本。 因此,您应确保脚本在运行脚本之前运行。
不确定单个Docker容器的部署,即v1,因为我还没有尝试过,但是v2中肯定支持它们,即多容器的部署。 您可以通过在Dockerrun.aws.json
中Dockerrun.aws.json
以下内容来添加容器主机名-
"hostname": "this-is-my-container-hostname"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.