2016-08-19 3 views
0

シェルエントリポイントに引数を渡す前に実行時に最後のセットアップをしたいと思っています。Dockerfileシェルエントリポイントの前にエントリポイントを実行する

ENTRYPOINT ./run_binary ${args}; /bin/sh -c 
CMD ./run_binary 

ただし、これを行うことによって、どのCMD引数はシェルのエントリポイントにそれを作ることには思えません。これを回避する方法はありますか?私は、シェルエントリポイントに制御を渡す前に(そして、CMD経由でUSERに)バイナリのセットアップステップを実行したいだけです。

答えて

1

の線に沿って何かをしようとしていないシェル

に受け取った引数を転送しますNT元Dockerfileから、次を参照してください。https://docs.docker.com/engine/reference/builder/#/onbuild

ONBUILD命令は、画像を 別のビルドのためのベースとして使用されたときにトリガ命令は、後で実行 する画像を追加します。トリガは、下流のDockerfileの FROM命令の直後に挿入されたかのように、 下流ビルドのコンテキストで実行されます。

あなたは、他の画像を構築する、例えば、アプリケーションが 環境またはユーザ固有 構成でカスタマイズすることができるデーモンを構築する ベースとして使用されるイメージを構築している場合、これは有用です。 CMDとENTRYPOINTについて

、以下を参照してくださいhttps://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact

  1. Dockerfileは少なくともCMDの1つのまたはENTRYPOINT コマンドを指定する必要があります。
  2. ENTRYPOINTは、コンテナを 実行可能ファイルとして使用するときに定義する必要があります。 ENTRYPOINTコマンドのデフォルト引数を定義する方法、または コンテナでアドホックコマンドを実行する方法として、
  3. CMDを使用する必要があります。
  4. CMDは、代替 引数でコンテナを実行しているときにオーバーライドされます。
1

CMDは両方とも、see the manualを指定しているときには、

を移動するための方法はありませんが、あなたはENTRYPOINTとして.SHスクリプトを使用することができますので、最初はあなたのバイナリコマンドを実行していること、ENTRYPOINTに送信する引数のリストになり、その後、私はそれが、あなたはONBUILD statemeをトリガー中間ビルドイメージを使用することができ

#!/bin/sh 

./run_binary 
/bin/sh -c "[email protected]" 
関連する問題