【发布时间】:2017-07-12 07:01:16
【问题描述】:
我正在尝试在启动期间设置 docker 容器主机名(HOSTNAME env var),这是在 dockerfile 的 ENTRYPOINT 中指定的 .sh 脚本:
#!/bin/sh
export HOSTNAME=something-$(hostname)
java $JAVA_OPTS -jar /app.jar
我希望 jvm 可以看到这个新主机名。
我得到的只是像这样的标准 docker 主机名:
/ # env
HOSTNAME=04dbf311a3be
当我在容器启动后使用上面的导出手动设置主机名时,一切正常。一切都在使用 compose stackfile 以集群方式运行。
EDIT1: 我不是在容器构建期间而是在启动期间这样做
EDIT2: 说清楚,我有什么:
码头工人群:
CONTAINER1
HOSTNAME=391fa2c7e184
CONTAINER2
HOSTNAME=39123a43242asd4
CONTAINER3
HOSTNAME=123123123123
我想要什么:
CONTAINER1
HOSTNAME=APPNAME-391fa2c7e184
CONTAINER2
HOSTNAME=APPNAME-123fa2c7e184
CONTAINER3
HOSTNAME=APPNAME-343fa345e184
并希望在启动 n 容器时自动设置此设置
我如何尝试实现这一目标:
我尝试在容器启动时调用的 start.sh 文件中设置它(指向 dockerfile 中的 ENTRYPOINT 命令):
#!/bin/sh
export HOSTNAME=something-$(hostname)
java $JAVA_OPTS -jar /app.jar
没有效果,HOSTNAME 没有被改变
【问题讨论】:
-
完全没有,我想在构建之后执行此操作 - 在启动期间
标签: java docker dockerfile hostname swarm