こんにちは、
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、あるいはその両方にあるようです。これについて、作成レベルで実行できることは何もありません。
それが私が考えていたものです。 ただし、次のコマンド回避策は機能します。これは、sshセッション中に変数HOSTNAMEが正しく設定されていることを意味します。 だから、なぜ作曲がそれを認識しないのか分かりません...それは奇妙です。
私はこれが関連しているように見えるbash
は、デフォルトでは$HOSTNAME
エクスポートしません。これは、 docker-compose
されない理由を説明しています。
Ubuntu 16.04環境でローカルに複製できたので、これもSSHとは関係がないことを確認できます。
@ shin- @made Ubuntuでこれを修正する方法を明確にしてください?
最も参考になるコメント
私はこれが関連しているように見える
bash
は、デフォルトでは$HOSTNAME
エクスポートしません。これは、docker-compose
されない理由を説明しています。Ubuntu 16.04環境でローカルに複製できたので、これもSSHとは関係がないことを確認できます。