1. ホーム
  2. docker

[解決済み] ENTRYPOINT配列でDocker環境変数を使用するにはどうすればよいですか?

2022-04-23 23:13:10

質問

環境変数を設定する場合、例えば ENV ADDRESSEE=world というような固定文字列に連結してエントリーポイントスクリプトで使いたい。

ENTRYPOINT ["./greeting", "--message", "Hello, world!"]

world は環境変数の値ですが、どうすればいいのでしょうか?試しに "Hello, $ADDRESSEE" を取るので、うまくいかないようです。 $ADDRESSEE を文字通りの意味で使用します。

どのように解決するのですか?

を使用しています。 実行形式 ENTRYPOINTの とは異なり シェルフォーム を使用します。 実行形式 は、コマンドシェルを起動しません。つまり、通常のシェル処理は行われません。例えば ENTRYPOINT [ "echo", "$HOME" ] は $HOME の変数置換を行いません。もし、シェル処理を行いたい場合は シェルフォーム または直接シェルを実行する、など。 ENTRYPOINT [ "sh", "-c", "echo $HOME" ] .

execフォームを使用してシェルを直接実行する場合、シェルフォームの場合と同様に、環境変数の展開を行うのはシェルであり、dockerではありません(from Dockerfileのリファレンス )

あなたの場合、私は シェルフォーム

ENTRYPOINT ./greeting --message "Hello, $ADDRESSEE\!"