Tôi có một vài vùng chứa Docker đang chạy như:
- Nginx
- Ứng dụng web 1
- Ứng dụng web 2
- PostgreSQL
Vì Nginx cần kết nối với các máy chủ ứng dụng web bên trong ứng dụng web 1 và 2 và các ứng dụng web cần kết nối với PostgreSQL, tôi có các liên kết như sau:
- Nginx --- liên kết ---> Ứng dụng web 1
- Nginx --- liên kết ---> Ứng dụng web 2
- Ứng dụng web 1 --- liên kết ---> PostgreSQL
- Ứng dụng web 2 --- liên kết ---> PostgreSQL
Điều này hoạt động khá tốt lúc đầu. Tuy nhiên, khi tôi phát triển phiên bản mới của ứng dụng web 1 và ứng dụng web 2, tôi cần phải thay thế chúng. Những gì tôi làm là xóa các vùng chứa ứng dụng web, thiết lập các vùng chứa mới và khởi động chúng.
Đối với vùng chứa ứng dụng web, địa chỉ IP của chúng lúc đầu sẽ giống như:
- 172.17.0.2
- 172.17.0.3
Và sau khi tôi thay thế chúng, chúng sẽ có địa chỉ IP mới:
- 172.17.0.5
- 172.17.0.6
Giờ đây, các biến môi trường tiếp xúc đó trong vùng chứa Nginx vẫn đang trỏ đến các địa chỉ IP cũ. Đây là vấn đề. Làm cách nào để thay thế một vùng chứa mà không phá vỡ liên kết giữa các vùng chứa? Vấn đề tương tự cũng sẽ xảy ra với PostgreSQL. Nếu tôi muốn nâng cấp phiên bản hình ảnh PostgreSQL, tôi chắc chắn cần phải xóa nó và chạy phiên bản mới, nhưng sau đó tôi cần phải xây dựng lại toàn bộ biểu đồ vùng chứa, vì vậy điều này không lý tưởng cho hoạt động của máy chủ trong đời thực.