コンテナで計算されたDockerコンテナCMDに環境変数を渡す

コンテナで計算されたDockerコンテナCMDに環境変数を渡す

Dockerコンテナを実行しようとしていますが、これを実行するときは、docker runコンテナ内で定義された環境変数を渡す必要があります。

問題のドッカーコンテナはconsul(https://github.com/hashicorp/docker-consul/blob/9fb940c32b6f46b0a77a640d7161054e00e97bbb/0.X/Dockerfile)エントリポイントとしてカスタムスクリプトがあります。したがって、sh -c '...$VARIABLE'これらの項目はすべてエントリポイントにパラメータとして渡され、明らかに失敗するため、古典的なアプローチは機能しません。次のように自分で書いてみてください。

docker run consul [...] $VARIABLE

また、$ VARIABLEはコンテナではなくホストで評価されるため、機能しません。

ベストアンサー1

その間、私は自分の問題を解決しました。答えは簡単です。なぜなら、私は次のことを知っているからです:

docker exec -it container sh -c "echo $VARIABLE"

完璧に動作します。 sh -cを使用してエントリポイント全体を実行し、必要なパラメータを渡すことができます。したがって、カスタムエントリポイントを持ち、コンテナ自体に定義された変数を渡すには、次の手順を実行します。

docker run yourimage sh -c "/path/to/entrypoint.sh param1 param2 ... $SOMEVAR ...."

おすすめ記事