Compose: Les variables d'environnement ne sont pas définies lors de l'utilisation de docker-compose via ssh

Créé le 29 déc. 2016  ·  4Commentaires  ·  Source: docker/compose

Bonjour,

Étant donné docker-compose 1.9.0 et le docker-compose.yml suivant:

version: '2'
services:
kafka:
image: wurstmeister/kafka
environment:
KAFKA_ADVERTISED_HOST_NAME: ${HOSTNAME}

Lorsque j'exécute la commande suivante:

ssh [email protected] "docker-compose up -d

Ensuite, la variable d'environnement du nom d'hôte n'est pas reconnue. Je reçois le message suivant:

La variable HOSTNAME n'est pas définie. Par défaut, une chaîne vide.

Si j'exécute la même commande sur l'hôte "bar" avec l'utilisateur "foo", je n'obtiens pas l'erreur. Idem si je me connecte d'abord avec ssh, puis exécute la commande.
C'est un problème majeur pour nous. Ce flux de travail se produit dans notre CI.

La seule solution de contournement que nous avons trouvée est d'écrire le script suivant:

#!/bin/bash
export HOSTNAME=${HOSTNAME}
docker-compose up -d

Et exécutez-le via ssh .. Ce qui n'est pas beau ..

kinquestion

Commentaire le plus utile

J'ai trouvé cela qui semble pertinent. bash n'exporte pas $HOSTNAME par défaut, ce qui explique pourquoi il n'est pas vu par docker-compose .

J'ai pu reproduire localement dans mon environnement Ubuntu 16.04 afin que je puisse confirmer que cela n'a rien à voir avec SSH non plus.

Tous les 4 commentaires

Eh bien, cela ne se produit-il pas parce que lorsque vous exécutez la commande directement via ssh, vous n'ouvrez pas réellement un shell? Cela signifie que certaines variables d'environnement comme $HOSTNAME ne seront pas définies?

Il semble que votre problème concerne UNIX et / ou SSH - je ne vois rien qui puisse être fait à ce sujet au niveau de la composition.

C'est ce que je pensais. Mais la solution de contournement de commande suivante fonctionne. Cela signifie que la variable HOSTNAME est correctement définie pendant la session ssh. Donc je ne sais pas pourquoi composer ne pas le reconnaître ... C'est bizarre.

J'ai trouvé cela qui semble pertinent. bash n'exporte pas $HOSTNAME par défaut, ce qui explique pourquoi il n'est pas vu par docker-compose .

J'ai pu reproduire localement dans mon environnement Ubuntu 16.04 afin que je puisse confirmer que cela n'a rien à voir avec SSH non plus.

@ shin- @made Comment résoudre ce problème sur Ubuntu, veuillez clarifier?

Cette page vous a été utile?
0 / 5 - 0 notes