network_mode: service:vpn an den verschwunnene db-Hostnumm
D’VPN-Nummraum deelen ass eng Topologiewahl. Entweder behält db seng eege Adress an d’vpn trëtt deem Netz bäi, oder alles äntwert op loopback.
Dir setzt network_mode: service:vpn bei d’App, startt de Stack nei, an d’App stierft well db net méi opgeléist gëtt. An der compose-Datei gouf näischt ëmbenannt, dofir sinn déi offensichtlech Verdächteg DNS an d’Datebank. Déi tatsächlech Ännerung ass méi kleng a méi komesch: d’App huet opgehalen, Member vum Compose-Netz ze sinn, wou deen Numm existéiert. Bis Dir decidéiert, aus wéi engem Nummraum d’Datebank äntweren soll, ass all Hostnumm-Korrektur eng Viraussetzung.
Firwat den db-Hostnumm net méi opgeléist gëtt
En Déngscht, deen network_mode benotzt, huet keng eege Adress op engem Compose-Netz; en léint sech den Nummraum vum genannten Déngscht. Dee Nummraum bréngt seng eege Schnëttstellen, Route, Portraum a Resolver mat, an en ersetzt d’Verbindung vun der App mam backend-Netz. Den Numm db war ni abstrakt: en huet op deem Netz gelieft an ass duerch säin agebaute DNS opgeléist ginn. Huelt d’Verbindung ewech an den Numm huet niergendwou ze léisen.
Bestätegt dat aus den Containeren eraus an net vum Host. Eng Sich, déi an der App feelt awer am Datebank-Container erfollegräich ass, heescht den Numm ass gutt an d’Memberschaft net. Dëst Resultat setzt och d’Korrektur an d’compose-Topologie amplaz an d’Resolver-Astellungen vun der App.
Dräi Froen ier Dir d’Datei ännert
Äntwert se an der Rei, well jidderee verschmälert d’Topologie. Op wat soll d’Datebank äntweren: op en Hostnumm, deen aner Container benotzen, oder nëmmen op d’App op loopback? Muss d’App en Port op den Host publizéieren, a wéi en Déngscht géif en besëtzen? Muss d’Datebank vum Host oder vun enger anerer Maschinn erreechbar sinn, oder nëmmen aus dem Tunnel?
Wann d’Datebank hiren eigenen Numm brauch an d’App näischt publizéiert, haalt se op getrennte Verbindungen. Wann d’App en Port muss publizéieren an alles duerch den Tunnel geet, setzt d’Datebank an den VPN-Nummraum a benotzt loopback. Béides ze mëschen ergëtt e Stack, dee propper start an um Verbindungszäitpunkt feelt.
Loosst d’Datebank wou se ass
Déi méi kleng Ännerung verbënnt de Besëtzer vum Nummraum mat dem Netz, dat d’Datebank schonn enthält. D’App ierft déi Verbindung well se de vpn-Stack deelt, an db léist sech genau wéi virdrun.
services:
vpn:
networks:
- backend
app:
network_mode: service:vpn
db:
networks:
- backend
networks:
backend:Setzt networks net och bei d’App. Compose refuséiert dës Eegenschaft zesumme mat network_mode am selwechten Déngscht, an de Feeler weist op d’Datei an net op d’Paar. Wann de VPN-Client d’backend-Destinatioun bannent sengem Nummraum filtert, passt seng ënnerstëtzte Lokalnetz-Politik och un; eng gedeelte Verbindung bitt e Wee awer iwwerschreift dee Filter net.
Réckelt d’Datebank an den Nummraum
Déi méi grouss Ännerung setzt d’Datebank an dee selwechten Nummraum an richt d’App op 127.0.0.1 mat dem richtege Port. Zwee Prozesser kënnen net béid déiselwecht Adress an dee selwechte Port binden just well se an ënnerschiddleche Containeren ugefaang hunn, dofir wäert eng Datebank, déi och op der Wildcard-Adress lauschtert, mat allem anescht kollidéieren, wat dat mécht. Kontrolléiert de Lauschterer ier Dir en réckelt.
Publizéiert Porte gehéieren zum Déngscht, deem den Nummraum gehéiert. ports bei d’App bäizefügen gëtt zesumme mat network_mode refuséiert, an eng separat App-Adress ze erfinden beschreift eng Schnëttstell, déi et net gëtt.
Bereetschaft, Blockéierung an de Resolver
depends_on ordnet den Ufank vun de Containeren; et ass kee Beweis, datt den Tunnel steet, an et stoppt den Trafik net, wann den Tunnel fält. Behandelt Erreechbarkeet, Tunnelbereetschaft an d’Blockéierung vu Feeler als dräi getrennt Ufuerderungen. En Stack, deen nëmmen déi éischt erfëllt, besteet en Handtest op engem gudden Dag a leckt op engem schlechten. Schreift déi dräi Äntwerten niewent der compose-Datei, wou déi nächst Persoun kuckt.
Den Nummraum ze deelen heescht och, datt d’App den Resolver vum VPN-Container ierft, wat hëlleft wann den Tunnel DNS-Server duerchdréckt an anescht verwirrt. Kontrolléiert wat den Nummraum tatsächlech enthält amplaz unzehuelen, datt de Resolver vum Host gëllt. D’Compose-Déngschtreferenz dokumentéiert network_mode, ports an d’Verhalen vun den Ofhängegkeeten op enger Plaz, dorënner firwat en network_mode-Déngscht keng eege Adress huet.