今一度、戒めよ "docker-compose up -d" とは、これまでつくってきた全てのプログラムもシェルも、何もかも破壊する、世界終末コマンドだ
2024年10月15日
今一度、戒めよ
"docker-compose up -d" とは、これまで作ってきた全てのプログラムもシェルも、何もかも破壊する、世界終末コマンドだ
docker-compose.ymlに
/mnt/smb_mount:/mnt/smb_mount
を追加しようとして、一度、世界を破滅させたことを、ゆめゆめ忘れるな。
docker-compose up -d --no-recreate
を使えば、既存の環境をまっさらにすることなく、新しいdocker-compose.ymlの内容を反映できて、その後、docker-compose startで普通に使うことができる、と考えて良いですか
はい、その通りです。
docker-compose up -d --no-recreate
を使えば、既存のコンテナを削除して再作成することなく、docker-compose.yml
の変更を反映できます。このコマンドは次のように動作します。
- 再作成しない: 既存のコンテナが削除されることなく、現在の状態を保持したまま、設定の変更を反映します。
- 変更の反映:
docker-compose.yml
に行った変更(環境変数、ボリューム、ネットワーク設定など)を反映しますが、コンテナそのものは再作成されません。
その後、docker-compose start
コマンドで通常通りコンテナを起動し、既存の環境を利用し続けることができます。
実行手順
docker-compose.yml
を修正: 新しい設定を追加・変更します。
docker-compose up -d --no-recreate
を実行: 既存のコンテナを保持したまま、設定変更を反映させます。
docker-compose start
を実行: コンテナが停止している場合、再度起動します。
このプロセスで、データが消えたり、コンテナが初期化されたりすることなく、変更が反映された環境を維持することができます。
重要なポイント:
- ボリュームの変更や新しいサービスの追加も反映されますが、既存のデータやプログラムには影響を与えません。
- ただし、設定に大きな変更がある場合(新しいネットワークやボリュームが追加される場合など)、再作成が必要になることがあります。その場合でも、
--no-recreate
オプションを使うことで、変更が最小限に留められます。
これで問題なく運用できるかと思いますので、安心して試してみてください。