2017-10-13 14 views
0

Dockerfileに関して問題が発生しています。私はWebアプリケーションを含むコンテナを持っています。もちろん、コンテナを起動すると、Webアプリケーションが起動し、ENTRYPOINT'/ sbin/init'に設定することで、コンテナを永久に稼働させることができます(単に起動してシャットダウンするだけではありません)。DOCKER:ドッカーが実行された後にコンテナ内で1回だけコマンドを実行する

今、問題は、私はいくつかのNFSマウントを実行する必要があります。 '後で'コンテナが最初に起動されます。私はENTRYPOINTを削除し、渡すためにCMDを利用することができます理解

CMD ./my_create_mount_script.sh

を言うが、その後、どのように私は私のコンテナが同じように実行し続けると確信して作るのですができますENTRYPOINT/sbin/initを使用していたのはなぜですか?

例えば、

Dockerfileでの私の第二の最後の行がある場合: CMD ./my_create_mount_script.sh(スクリプト内だけでいくつかの文をマウントしている)と私の最後の行は次のとおりです。ENTRYPOINT/sbinに/ initをこの場合、ENTRYPOINTはCMDがargs、それ以外のものを渡すことを期待しているので、私が理解する限り、それは私には何の役にも立たないでしょう。

それが重要ならば、私は

答えて

1

次のような複数のCMD引数を渡すことができAWS ECSにこのコンテナを展開します^:

CMD /sbin/init ; /do_something_else 

それとも含め、あなたが望むすべてを行うスクリプトを作成することができますWebアプリケーションの起動してからENTRYPOINTにそれを渡す

+0

そのCMDの例あなたが動作するようには思えない与えた - 唯一のAFTE(セカンダリ一部を実行しているようですrはセミコロン)。また、単純な.shファイルを作成してその中に/ sbin/initを入れて、そのファイルをENTRYPOINTに渡そうとすると、/ sbin/init(またはinitのみ)は実行されません。 –

+0

@AliKhan https://docs.docker.com/engine/admin/multi-service_container/こちらをご覧ください:http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/ – Sergiu

+0

ありがとうございます。あなたが提供したリンクはとても役に立ち、私は誤解を解消することができました。私の使用事例では、プロセス#2としてWebアプリケーションを起動するためにsupervisordを使用して終了し、プロセス#1として実行したいスクリプトを作成しました。 –

関連する問題