network_mode: service:vpn en de fermiste db-hostnamme
It diele fan ’e VPN-namromte is in topologyskar. Of db hâldt syn eigen adres en de vpn slút him oan by dat netwurk, of alles antwurdet op loopback.
Jo foegje network_mode: service:vpn ta oan ’e app, starte de stapel opnij, en de app stjert omdat db net mear oplost. Der is neat yn it compose-bestân omneamd, dus de fanselssprekkende fertochten binne DNS en de databank. De echte feroaring is lytser en frjemder: de app is gjin lid mear fan it Compose-netwurk wêr’t dy namme bestiet. Oant jo beslute út hokker nammeromte de databank antwurdzje moat, is elke hostnamme-ferbettering giswurk.
Wêrom’t de db-hostnamme ophold mei oplossen
In tsjinst dy’t network_mode brûkt hat gjin eigen adres op in Compose-netwurk; hy liende de nammeromte fan ’e neamde tsjinst. Dy nammeromte bringt syn eigen ynterfaces, rûtes, poartromte en oplosser mei, en ferfangt de ferbining fan ’e app mei it backend-netwurk. De namme db wie nea abstrakt: hy libbe op dat netwurk en waard oplost fia syn ynboude DNS. Helje de ferbining fuort en de namme hat nearne mear om te oplossen.
Befêstigje dat fan binnen de konteners ynstee fan fan ’e host. In syktocht dy’t yn ’e app mislearret mar yn ’e databankkontener slagget, betsjut dat de namme goed is en it lidmaatskip net. Dat resultaat pleatst de ferbettering ek yn ’e compose-topology ynstee fan yn ’e oplosser-ynstellings fan ’e app.
Trije fragen foardat jo it bestân bewurkje
Beäntwurdzje se yn folchoarder, want elk ferlingt de topology. Wêr’t de databank op antwurdzje moat: in hostnamme dy’t oare konteners brûke, of allinnich de app op loopback? Moat de app in poarte nei de host publisearje, en hokker tsjinst soe dy besitte? Moat de databank berikber wêze fan ’e host of fan in oare masine, of allinnich fan binnen de tunnel?
As de databank syn eigen namme nedich hat en de app publisearret neat, hâld se dan op aparte ferbiningen. As de app in poarte publisearje moat en alles giet troch de tunnel, set de databank dan yn ’e VPN-namromte en brûk loopback. It mingen fan ’e twa jout in stapel dy’t skjin start en by ferbinen mislearret.
Lit de databank wêr’t se is
De lytsere feroaring ferbynt de eigner fan ’e nammeromte oan it netwurk dat de databank al befettet. De app erft dy ferbining omdat er de vpn-stapel dielt, en db lost presys op as earder.
services:
vpn:
networks:
- backend
app:
network_mode: service:vpn
db:
networks:
- backend
networks:
backend:Foegje networks net ek ta oan ’e app. Compose wiist dat eigenskip ôf njonken network_mode yn deselde tsjinst, en de flater wiist nei it bestân ynstee fan nei it pear. As de VPN-klant it backend-doel binnen syn nammeromte filteret, pas dan ek syn stipe lokaal-netwurkbelied oan; in dielde ferbining biedt in paad mar heft dat filter net op.
Ferpleats de databank nei de nammeromte
De gruttere feroaring set de databank yn deselde nammeromte en rjochtet de app op 127.0.0.1 mei de echte poarte. Twa prosessen kinne net beide itselde adres en deselde poarte bine, allinnich omdat se yn ferskillende konteners start binne, dus in databank dy’t ek op it wildcard-adres harket, sil botsing krije mei alles oars dat dat docht. Kontrolearje de harker foardat jo him ferpleatse.
Publisearre poarten hearre by de tsjinst dy’t de nammeromte besit. It tafoegjen fan ports oan ’e app wurdt ôfwiisd njonken network_mode, en it betinken fan in apart app-adres beskriuwt in ynterface dy’t net bestiet.
Gereedheid, blokkearjen en de oplosser
depends_on oarderet it starten fan konteners; it is gjin bewiis dat de tunnel oan is, en it stopet gjin ferkear as de tunnel falt. Behannelje berikberens, tunnelgereedheid en flaterblokkearring as trije aparte easken. In stapel dy’t allinnich it earste befrediget, slagget op in goede dei foar in hânmjittige test en lekt op in minne. Skriuw de trije antwurden njonken it compose-bestân, dêr’t de folgjende persoan sjen sil.
It dielen fan in nammeromte betsjut ek dat de app de oplosser fan ’e VPN-kontener erft, wat helpt as de tunnel DNS-servers trochdrukt en ferbjusteret as er dat net docht. Kontrolearje wat de nammeromte eins befettet ynstee fan oan te nimmen dat de oplosser fan ’e host jildt. De Compose-tsjinstreferinsje dokumintearret network_mode, ports en it gedrach fan ôfhinklikheden op ien plak, ynklusyf wêrom’t in network_mode-tsjinst gjin eigen adres hat.