次のように実行されているDockerコンテナがいくつかあります。
- Nginx
- Webアプリ1
- Webアプリ2
- PostgreSQL
NginxはWebアプリ1および2内のWebアプリケーションサーバーに接続する必要があり、WebアプリはPostgreSQLと通信する必要があるため、次のようなリンクがあります。
- Nginx ---リンク---> Webアプリ1
- Nginx ---リンク---> Webアプリ2
- Webアプリ1 ---リンク---> PostgreSQL
- Webアプリ2 ---リンク---> PostgreSQL
これは最初はかなりうまく機能します。ただし、新しいバージョンのWebアプリ1とWebアプリ2を開発するときは、それらを置き換える必要があります。私がしていることは、Webアプリのコンテナーを削除し、新しいコンテナーをセットアップして開始することです。
Webアプリコンテナの場合、最初のIPアドレスは次のようになります。
- 172.17.0.2
- 172.17.0.3
そして、私がそれらを交換した後、それらは新しいIPアドレスを持ちます:
- 172.17.0.5
- 172.17.0.6
現在、Nginxコンテナー内の公開された環境変数は、引き続き古いIPアドレスを指しています。ここに問題があります。コンテナ間のリンクを壊さずにコンテナを交換するにはどうすればよいですか?同じ問題がPostgreSQLでも発生します。PostgreSQLイメージのバージョンをアップグレードしたい場合は、必ずそれを削除して新しいバージョンを実行する必要がありますが、コンテナグラフ全体を再構築する必要があるため、これは実際のサーバー操作には理想的ではありません。