今一度、戒めよ "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コマンドで通常通りコンテナを起動し、既存の環境を利用し続けることができます。

実行手順

  1. docker-compose.ymlを修正: 新しい設定を追加・変更します。
  2. docker-compose up -d --no-recreateを実行: 既存のコンテナを保持したまま、設定変更を反映させます。
  3. docker-compose startを実行: コンテナが停止している場合、再度起動します。

このプロセスで、データが消えたり、コンテナが初期化されたりすることなく、変更が反映された環境を維持することができます。

重要なポイント:

  • ボリュームの変更や新しいサービスの追加も反映されますが、既存のデータやプログラムには影響を与えません。
  • ただし、設定に大きな変更がある場合(新しいネットワークやボリュームが追加される場合など)、再作成が必要になることがあります。その場合でも、--no-recreateオプションを使うことで、変更が最小限に留められます。

これで問題なく運用できるかと思いますので、安心して試してみてください。

 

2024年10月15日未分類

Posted by ebata