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;"]
参考
nginxをdockerで動かす時のTips 3選 - インフラエンジニアway - Powered by HEARTBEATS