你好,
给定docker-compose 1.9.0和以下docker-compose.yml:
version: '2'
services:
kafka:
image: wurstmeister/kafka
environment:
KAFKA_ADVERTISED_HOST_NAME: ${HOSTNAME}
当我执行以下命令时:
ssh [email protected] "docker-compose up -d
然后,无法识别主机名环境变量。 我收到以下消息:
未设置HOSTNAME变量。 默认为空字符串。
如果我用用户“ foo”在主机“ bar”上执行相同的命令,则不会收到该错误。 如果首先连接ssh,然后执行命令,则相同。
这对我们来说是一个重大问题。 此工作流发生在我们的CI中。
我们发现的唯一解决方法是编写以下脚本:
#!/bin/bash
export HOSTNAME=${HOSTNAME}
docker-compose up -d
并通过ssh执行它。
好吧,这不会发生是因为直接通过ssh执行命令时,您实际上没有打开shell吗? 意味着将不会设置某些环境变量,例如$HOSTNAME
?
看来您的问题出在UNIX和/或SSH上-我在Compose级别上看不到可以做的任何事情。
那就是我的想法。 但是,以下命令变通办法起作用。.这意味着在ssh会话期间正确设置了变量HOSTNAME。 所以我不知道为什么compose无法识别它。
我发现这似乎很相关。 bash
默认情况下不会导出$HOSTNAME
,这解释了为什么docker-compose
不会看到它。
我能够在Ubuntu 16.04环境中本地复制,因此我可以确认这与SSH无关。
@ shin- @made如何在Ubuntu上解决此问题,请澄清一下?
最有用的评论
我发现这似乎很相关。
bash
默认情况下不会导出$HOSTNAME
,这解释了为什么docker-compose
不会看到它。我能够在Ubuntu 16.04环境中本地复制,因此我可以确认这与SSH无关。