繁体   English   中英

在Elastic Beanstalk上设置Docker容器主机名

[英]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.jsonDockerrun.aws.json以下内容来添加容器主机名-

  "hostname": "this-is-my-container-hostname"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM