Привет,
Учитывая 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 не установлена. По умолчанию пустая строка.
Если я выполняю ту же команду на хосте «bar» с пользователем «foo», я не получаю сообщение об ошибке. То же самое, если я сначала подключаюсь к ssh, а затем выполняю команду.
Для нас это серьезная проблема. Этот рабочий процесс происходит в нашем CI.
Единственный обходной путь, который мы нашли, - написать следующий скрипт:
#!/bin/bash
export HOSTNAME=${HOSTNAME}
docker-compose up -d
И выполнить через ssh .. Что некрасиво ..
Ну, разве это не происходит, потому что при выполнении команды напрямую через ssh вы на самом деле не открываете оболочку? Это означает, что некоторые переменные среды, такие как $HOSTNAME
, не будут установлены?
Похоже, ваша проблема связана с UNIX и / или SSH - я не вижу ничего, что можно было бы сделать с этим на уровне Compose.
Вот о чем я думал. Но работает следующая команда. Это означает, что переменная HOSTNAME правильно установлена во время сеанса ssh. Так что я не знаю, почему Compose не распознает это ... Это странно.
Я нашел это, что кажется актуальным. bash
по умолчанию не экспортирует $HOSTNAME
, что объясняет, почему его не видит docker-compose
.
Мне удалось воспроизвести локально в моей среде Ubuntu 16.04, поэтому я могу подтвердить, что это тоже не имеет ничего общего с SSH.
@ shin- @made Как это исправить на Ubuntu, поясните, пожалуйста?
Самый полезный комментарий
Я нашел это, что кажется актуальным.
bash
по умолчанию не экспортирует$HOSTNAME
, что объясняет, почему его не видитdocker-compose
.Мне удалось воспроизвести локально в моей среде Ubuntu 16.04, поэтому я могу подтвердить, что это тоже не имеет ничего общего с SSH.