背景
docker-compose でローカル開発している中で、nginxの設定(nginx.conf)を変更した後にコンテナ内部で
コンテナ内部
service nginx restart
したらコンテナが終了してしまった。
結論
コンテナ内部
service nginx reload
で対応すると終了しない。restart だとnginxのプロセスが終わるので処理が終わったとみなされるという事かな。
もちろんDockerコンテナ再起動するのが王道。
ホスト
# 最後のnginxはコンテナ名でなく、サービス名
docker-compose restart nginx
でも細かくいろいろやりたい時とかにコンテナ再起動までしたくないケースで使えるかと。
再現テスト
docker-compose.yml
version: '3.7'
services:
nginx:
image: nginx
restart: always
ports:
- 8880:80
container_name: nginx-test
起動
sudo docker-compose up
コンテナログイン
sudo docker exec -it nginx-test bash
コンテナ内部
service nginx restart
上記docker-compose.ymlではrestartつけてるのですぐ起動しますが、一旦は終了してコンテナからはログアウトされます。再度コンテナログインが必要です。
コンテナ内部
service nginx reload
今度はコンテナ終了しません。