Mam kilka kontenerów Docker działających jak:
- Nginx
- Aplikacja internetowa 1
- Aplikacja internetowa 2
- PostgreSQL
Ponieważ Nginx musi łączyć się z serwerami aplikacji internetowych w aplikacji internetowej 1 i 2, a aplikacje internetowe muszą komunikować się z PostgreSQL, mam takie linki:
- Nginx --- link ---> Aplikacja internetowa 1
- Nginx --- link ---> Aplikacja internetowa 2
- Aplikacja internetowa 1 --- link ---> PostgreSQL
- Aplikacja internetowa 2 --- link ---> PostgreSQL
Na początku działa to całkiem dobrze. Jednak kiedy tworzę nową wersję aplikacji internetowej 1 i aplikacji internetowej 2, muszę je wymienić. Ja tylko usuwam kontenery aplikacji internetowej, konfiguruję nowe kontenery i uruchamiam je.
W przypadku kontenerów aplikacji internetowych ich adresy IP na początku wyglądałyby następująco:
- 172.17.0.2
- 172.17.0.3
A po ich wymianie będą miały nowe adresy IP:
- 172.17.0.5
- 172.17.0.6
Teraz te ujawnione zmienne środowiskowe w kontenerze Nginx nadal wskazują na stare adresy IP. Tu pojawia się problem. Jak wymienić kontener bez zrywania połączenia między kontenerami? Ten sam problem będzie dotyczył również PostgreSQL. Jeśli chcę zaktualizować wersję obrazu PostgreSQL, z pewnością muszę ją usunąć i uruchomić nową, ale potem muszę przebudować cały wykres kontenera, więc nie jest to idealne rozwiązanie do rzeczywistej pracy serwera.