2016-10-27 4 views
0

Dockerfileを使用してカスタム画像を作成しています。私はコンテナを停止し、再びそれを開始するとき、新鮮な実行はうまく動作するようです - それは開始せず、出口0の状態で残っています。ENTRYPOINTを使用してコンテナの開始と停止を有効にする方法

イメージは、symfony webアプリケーション用のapache2とphpモジュールの束で構成されています。

これは、私は、容器は、一般的にdocker-entrypoint.sh使用が、中に何が起こるのかがわからないとそれが果たしている役割を参照する方法Dockerfileエンド

RUN a2enmod rewrite 
CMD service apache2 restart 
ENTRYPOINT ["/usr/sbin/apache2ctl"] 
CMD ["-D", "FOREGROUND"] 
EXPOSE 80 

です。

答えて

3

エントリポイントは、再起動しないコンテナとは関係がありません。あなたの問題は他の場所にある可能性が高く、デバッグするにはコンテナからログを調べる必要があります。 docker diff ...の出力は、コンテナファイルシステムで何が変更されたかを見るのに役立ちます。

ENTRYPOINTが定義されていない場合、ドッカーはデフォルトでCMDを実行します。 ENTRYPOINTが定義されている場合は、CMDの何かがエントリポイントスクリプトのcli引数になります。上の例では、コンテナを/usr/sbin/apache2ctl -D FOREGROUNDで開始(または再起動)します。 docker runコマンドでコンテナ名の後に追加するものは、CMDの値を上書きします。 ENTRYPOINTの値をdocker run --entrypoint ...で上書きできます。

詳細はDocker's documentation on the entrypoint optionを参照してください。

+0

BMitchさん、ありがとうございます - 私たちは近づいていると思います。私のコンテナは、その内部にapache2プロセスを停止しても終了します。だから、私はコンテナの停止の開始とapache2サービスの停止の開始への答えは1つと同じだと思いますか?何が間違っている可能性がありますか? –

+0

コンテナはプロセスを分離します(例えば、 'apache2ctl')。そのプロセスが終了すると、コンテナも終了します。 – BMitch

+0

もう一度ありがとうございます - イメージを変更する必要があると思いますか?別のプロセスに耳を傾けるように - それを行うために混乱しない方法は何ですか? –

関連する問題