Compose: 通过SSH使用docker-compose时未设置环境变量

创建于 2016-12-29  ·  4评论  ·  资料来源: docker/compose

你好,

给定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执行它。

kinquestion

最有用的评论

我发现这似乎很相关。 bash默认情况下不会导出$HOSTNAME ,这解释了为什么docker-compose不会看到它。

我能够在Ubuntu 16.04环境中本地复制,因此我可以确认这与SSH无关。

所有4条评论

好吧,这不会发生是因为直接通过ssh执行命令时,您实际上没有打开shell吗? 意味着将不会设置某些环境变量,例如$HOSTNAME

看来您的问题出在UNIX和/或SSH上-我在Compose级别上看不到可以做的任何事情。

那就是我的想法。 但是,以下命令变通办法起作用。.这意味着在ssh会话期间正确设置了变量HOSTNAME。 所以我不知道为什么compose无法识别它。

我发现这似乎很相关。 bash默认情况下不会导出$HOSTNAME ,这解释了为什么docker-compose不会看到它。

我能够在Ubuntu 16.04环境中本地复制,因此我可以确认这与SSH无关。

@ shin- @made如何在Ubuntu上解决此问题,请澄清一下?

此页面是否有帮助?
0 / 5 - 0 等级