我有一些运行如下的Docker容器:
- Nginx的
- 网路应用程式1
- 网路应用程式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映像版本,我当然需要删除它并运行新的映像,但是然后我需要重建整个容器图,因此对于实际的服务器操作而言,这不是理想的选择。