2016-04-04 13 views
0

設定ファイルが変更されたときに、たとえば 'nginx'などのサービスを再起動しますか?たとえば、Puppetにnginx cfgファイルをいくつか作成し、それらをnginxコンテナにマウントされたボリュームに配置します。現時点では私はドッカー・ジェンを使用していますが、他の方法はありますか?設定が変更されたときにDockerサービスを再起動する

答えて

0

ドッカーコンテナは一時的であることを意味します。また、Dockerコンテナは、プロセスPID1をコンテナ内に作成することによって、実行中のプロセスを「コンテナ化」します。つまり、従来のinitシステムはありません。実際、initシステムは全くありません。そしてあなたが知っているように、あなたのコンテナ内のプロセスが終了すると、コンテナが死ぬ。一時的なコンテナを実装するという観点から問題に近づけば、サービスを再開することはありません。変更した構成を使用して新しいコンテナを作成します。 thaJeztahのコメントで述べたように、コンテナをdocker restart nginxに設定すると、設定を更新することができます。

今、この四角いペグを丸い穴にハンマーで留める方法がいくつかあります。あなたはそれより優れています...しかし、あなたはすでにdocker-genがあなたを近くにお迎えすることに気付きました。同様に、jwilder/nginx-proxyimageがどのように機能しているかを知りたければ、実際にドッカーゲンがどのように機能するかを知ることができます。しかし既にあなたはすでにそれを見たことがあります。あなたはすでにdocker-genを使っているからです。

他のオプションは、supervisordのようなもので靴ひねりをすることです。オンラインで行うことについてはplenty of informationです。数多くの人々がこれを過去に行ってきました。そして、それがなぜ問題を解決するのか理解できない他の人々のために、supervisordはあなたのコンテナのPID 1になり、子供のnginxプロセスを "普通のように"再開できますが、あなたのコンテナを殺すことはありません。

+0

nginxを再起動するために 'supervisord'を使う必要はありません。もしあなたが 'nginx'を**コンテナにすることを考えれば; 'docker restart my-nginx-container'はnginx-containerを再起動し、nginxを起動します。ボリューム内の設定が変更された場合は、設定を再ロードします。 – thaJeztah

+0

新しい設定データがマウントされ、ボリュームから読み込まれた場合は、コンテナを再起動してください。 – L0j1k

関連する問題