다음과 같이 실행되는 몇 가지 Docker 컨테이너가 있습니다.
- Nginx
- 웹 앱 1
- 웹 앱 2
- PostgreSQL
Nginx는 웹 앱 1과 2 내의 웹 애플리케이션 서버에 연결해야하고 웹 앱은 PostgreSQL과 통신해야하므로 다음과 같은 링크가 있습니다.
- Nginx --- 링크 ---> 웹 앱 1
- Nginx --- 링크 ---> 웹 앱 2
- 웹 앱 1 --- 링크 ---> PostgreSQL
- 웹 앱 2 --- 링크 ---> PostgreSQL
이것은 처음에는 꽤 잘 작동합니다. 하지만 웹앱 1과 웹앱 2의 새 버전을 개발할 때이를 교체해야합니다. 내가하는 일은 웹 앱 컨테이너를 제거하고 새 컨테이너를 설정 한 다음 시작하는 것입니다.
웹 앱 컨테이너의 경우 처음에 해당 IP 주소는 다음과 같습니다.
- 172.17.0.2
- 172.17.0.3
그리고 그것들을 교체하면 새 IP 주소를 갖게됩니다.
- 172.17.0.5
- 172.17.0.6
이제 Nginx 컨테이너에 노출 된 환경 변수는 여전히 이전 IP 주소를 가리 킵니다. 여기에 문제가 있습니다. 컨테이너 간의 연결을 끊지 않고 컨테이너를 교체하려면 어떻게해야합니까? PostgreSQL에서도 동일한 문제가 발생합니다. PostgreSQL 이미지 버전을 업그레이드하려면 확실히 제거하고 새 버전을 실행해야하지만 전체 컨테이너 그래프를 다시 빌드해야하므로 실제 서버 운영에는 적합하지 않습니다.