楽しいだけで十分です

好きなことを書きます

Docker nginxのコンテナすぐに終了してしまう現象

自分でDockerfileを書いて、nginxをインストールしたコンテナを作ったが、docker runしても、すぐに処理が終了する(docker psしても、見当たらない)
「なんで・・・?」ってなって調べてみた。

原因

Dockerはプロセスがフォアグラウンドで動いてないと、コンテナが終了するため。
nginxは、デフォルトでデーモンとして動くので、バックグラウンド実行になり、コンテナが終了してしまっていた。

解決策

デーモンをオフにして、フォアグラウンドで実行できるようにすればいい。
方法としてはいくらかあるみたいだが、とりあえず簡単なやつを2つ書いておく。

  • nginx.confに、daemon off;の行を追加することで、デーモンをオフにする
# Dockerfile
echo "daemon off;" >> /etc/nginx/nginx.conf
  • 起動コマンドで、デーモンをオフにする方法もあるみたい。
# Dockerfile
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

参考

Docker 事始め - Qiita

nginxをdockerで動かす時のTips 3選 - インフラエンジニアway - Powered by HEARTBEATS