Olá,
Dado docker-compose 1.9.0 e o seguinte docker-compose.yml:
version: '2'
services:
kafka:
image: wurstmeister/kafka
environment:
KAFKA_ADVERTISED_HOST_NAME: ${HOSTNAME}
Quando eu executo o seguinte comando:
ssh [email protected] "docker-compose up -d
Então, a variável de ambiente do nome do host não é reconhecida. Recebo a seguinte mensagem:
A variável HOSTNAME não está definida. Padronizando para uma string em branco.
Se eu executar o mesmo comando no host "bar" com o usuário "foo", não obtenho o erro. Mesmo se eu primeiro conectar com ssh e, em seguida, executar o comando.
Este é um grande problema para nós. Este fluxo de trabalho acontece em nosso CI.
A única solução alternativa que encontramos é escrever o seguinte script:
#!/bin/bash
export HOSTNAME=${HOSTNAME}
docker-compose up -d
E executá-lo através de ssh .. Que não é bonito ..
Bem, isso não acontece porque ao executar o comando por meio de ssh diretamente, você não está realmente abrindo um shell? Significa que algumas variáveis de ambiente como $HOSTNAME
não serão definidas?
Parece que seu problema é com UNIX e / ou SSH - não vejo nada que possa ser feito sobre isso no nível do Compose.
Isso é o que eu estava pensando. Mas a seguinte solução alternativa de comando funciona. O que significa que a variável HOSTNAME está definida corretamente durante a sessão ssh. Então não sei porque compor não reconheço ... Isso é estranho.
Achei isso que parece relevante. bash
não exporta $HOSTNAME
por padrão, o que explica por que não está sendo visto por docker-compose
.
Consegui reproduzir localmente em meu ambiente Ubuntu 16.04, então posso confirmar que isso também não tem nada a ver com SSH.
@ shin- @made Como consertar isso no Ubuntu, por favor, esclareça?
Comentários muito úteis
Achei isso que parece relevante.
bash
não exporta$HOSTNAME
por padrão, o que explica por que não está sendo visto pordocker-compose
.Consegui reproduzir localmente em meu ambiente Ubuntu 16.04, então posso confirmar que isso também não tem nada a ver com SSH.