この簡単なテクニックは私にとってうまくいきます:
FROM node:9
# ...
ENTRYPOINT dkr2g run "$dkr2g_run_args"
次に、コンテナを次のように起動します。
docker run \
-e dkr2g_run_args="$run_args" \
--name "$container_name" "$tag_name"
env 変数をコマンド ライン引数に分散させると、いくつかのエッジ ケースの問題が発生する可能性がありますが、ほとんどの場合は機能するはずです。
ENTRYPOINT は次のように機能します。
ENTRYPOINT ["foo", "--bar", "$baz"] # $baz will not be interpreted
またはそのように:
ENTRYPOINT foo --bar $baz
後者が好まれない理由はわかりませんが、環境変数の補間/解釈は後者を使用した場合にのみ可能です。参照: ENTRYPOINT 配列で Docker 環境変数を使用するにはどうすればよいですか?
ただし、引数を渡すより堅牢な方法$@
は、env 変数の代わりに使用することです。docker run
したがって、次のようにコマンドを使用して --entrypoint をオーバーライドする必要があります。
docker run --entrypoint="foo" <tag> --bar $@
エントリポイントを適切にオーバーライドする方法の正しい構文を学ぶには、確かにそれを調べる必要がありますが、一般的には奇妙です-タグ名の--entrypoint="foo"
前に--entrypoint
、タグ名の後に引数を配置する必要があります。変。