2017-07-15 9 views
0

は、私がDockerfileにこのラインを持っていると言う:フィード変数の引数

ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js","a","b","c"] 

プログラムでbとcを移入するための最良の方法は何ですか? ENTRYPOINTのハードコーディングをどうやって避けることができるのかよくわかりません。

これを回避する方法がいくつかあります。私は1つの変数にすべての私の引数を渡すと、その1つの変数をハードコーディング、そのようなものでした:

ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js","--all-args=${x}"] 

が、私は率直に言ってどちらか適切に達成する方法がわからないと、私はむしろ、最初にAを使用してそれを解決したいです、b、cパターンを可能にします。誰でもこれを行う方法を知っていますか?

+0

それはちょうどドッキングウィンドウの実行を使用してエントリポイントを無効にするのが最善かもしれませんか...? –

+0

それは私が考えていたものですが、それを実行するためにドッカーが走っている点を指定していませんか? –

答えて

1

パラメータが何であるかを変更したい場合は、ドッカーの実行行にそれらを渡すのはなぜですか? ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js"]

:あなたのイメージ名の後に

docker run -ti yourimage a b c

引数は、単に伝統的な引数のように渡されます。ここでは、cli.jsargv引数として受け取られます。

ドッカーの実行コマンド"に二重引用符を使用すると、スペースを含む単一の引数に適切に処理することができます。

また、proper entrypoint for Dockerを使用することをお勧めします。そうすれば、CTR + CやSTOP信号やプログラム的な機能など、いくつかの機能がさらに改善されます。これを達成するために

0

、そうのように、単に完全にDockerfileにENTRYPOINTラインを省略して、docker runを使用して--entrypoint値を渡すことが最善と思われる:

docker run --entrypoint="/usr/src/app/node_modules/suman/cli.js" --name ${container_name} ${image_tag} ${argz} 

あなたはオーバーライドについて読むことができますここでのエントリポイント:

https://medium.com/@oprearocks/how-to-properly-override-the-entrypoint-using-docker-run-2e081e5feb9d