在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按文件名顺序运行脚本。 所以你应该确保你的脚本在运行脚本之前运行。