如何使用在Dockerfile中作为参数传递的主机名?

时间:2016-10-12 19:45:57

标签: docker environment-variables dockerfile

我有类似的命令来创建容器:

docker create --name=myname \
    --publish "80:80" \
    --hostname myhostname \
    local/local

并希望使用主机名为Web服务器生成虚拟主机。

我尝试使用测试命令:

RUN touch ~/aaa-${HOSTNAME}

但得到了结果:aaa-719d8d68f3dc但预计aaa-myhostname

因此,它使用中间容器环境变量而不是传递一个。

2 个答案:

答案 0 :(得分:0)

--hostname选项设置容器主机名,但不设置为环境变量。

如果您希望将其作为环境变量访问,请使用-e hostname=my.host.name代替--hostname。

答案 1 :(得分:0)

RUN指令中的任何内容都发生在中间容器中,因此如果您创建依赖于主机信息的状态,则在图像层中保存的内容是有关中间容器的信息。

每个容器的变化都应该在CMDENTRYPOINT中完成,因此它将在容器运行时执行。您可以使用引导脚本作为入口点,从主机设置状态,然后运行应用程序进程。