Compose: docker-compose throughsshを使用する場合は環境変数が設定されません

作成日 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変数が設定されていません。 デフォルトは空白の文字列です。

ホスト「bar」でユーザー「foo」を使用して同じコマンドを実行しても、エラーは発生しません。 最初にsshに接続してから、コマンドを実行した場合も同じです。
これは私たちにとって大きな問題です。 このワークフローはCIで発生します。

私たちが見つけた唯一の回避策は、次のスクリプトを書くことです。

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

そして、sshを介して実行します。これはハンサムではありません。

kinquestion

最も参考になるコメント

私はこれが関連しているように見えるbashは、デフォルトでは$HOSTNAMEエクスポートしません。これは、 docker-composeされない理由を説明しています。

Ubuntu 16.04環境でローカルに複製できたので、これもSSHとは関係がないことを確認できます。

全てのコメント4件

さて、sshを介してコマンドを直接実行するとき、実際にはシェルを開いていないので、それは起こりませんか? $HOSTNAMEようないくつかの環境変数が設定されないという意味ですか?

問題はUNIXやSSH、あるいはその両方にあるようです。これについて、作成レベルで実行できることは何もありません。

それが私が考えていたものです。 ただし、次のコマンド回避策は機能します。これは、sshセッション中に変数HOSTNAMEが正しく設定されていることを意味します。 だから、なぜ作曲がそれを認識しないのか分かりません...それは奇妙です。

私はこれが関連しているように見えるbashは、デフォルトでは$HOSTNAMEエクスポートしません。これは、 docker-composeされない理由を説明しています。

Ubuntu 16.04環境でローカルに複製できたので、これもSSHとは関係がないことを確認できます。

@ shin- @made Ubuntuでこれを修正する方法を明確にしてください?

このページは役に立ちましたか?
0 / 5 - 0 評価