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 ...."