network_mode: service:vpn na jina la mwenyeji db lililopotea
Kushiriki nafasi ya majina ya VPN ni chaguo la topolojia. Ama db huhifadhi anwani yake mwenyewe na vpn hujiunga na mtandao huo, au kila kitu hujibu kwenye loopback.
Unaongeza network_mode: service:vpn kwenye programu, unawasha tena staki, na programu inakufa kwa sababu db haltatuliwi tena. Hakuna jina lililobadilishwa katika faili ya compose, kwa hiyo washukiwa dhahiri ni DNS na hifadhidata. Mabadiliko halisi ni madogo na ya ajabu zaidi: programu iliacha kuwa mwanachama wa mtandao wa Compose ambapo jina hilo linapatikana. Hadi uamue hifadhidata itajibu kutoka nafasi gani ya majina, kila marekebisho ya jina la mwenyeji ni ubashiri.
Kwa nini jina la mwenyeji db liliacha kutatuliwa
Huduma inayotumia network_mode haina anwani yake kwenye mtandao wa Compose; hukopa nafasi ya majina ya huduma iliyotajwa. Nafasi hiyo huleta violesura vyake, njia zake, nafasi ya bandari na kitatuzi chake, na inachukua nafasi ya muunganisho wa programu na mtandao wa backend. Jina db halikuwa kikemee kamwe: liliishi kwenye mtandao huo na lilitatuliwa kupitia DNS yake iliyojengwa ndani. Ondoa muunganisho na jina halina mahali pa kutatuliwa.
Thibitisha hilo kutoka ndani ya kontena na si kutoka kwa mwenyeji. Utafutaji unaoshindikana kwenye programu lakini unafanikiwa kwenye kontena la hifadhidata humaanisha kuwa jina ni sahihi na uanachama si sahihi. Matokeo hayo huweka marekebisho katika topolojia ya compose na si katika mipangilio ya kitatuzi cha programu.
Maswali matatu kabla ya kuhariri faili
Yajibu kwa mpangilio, kwa sababu kila moja hupunguza topolojia. Hifadhidata inapaswa kujibu nini: jina la mwenyeji ambalo kontena nyingine hutumia, au programu pekee kwenye loopback? Programu inapaswa kuchapisha bandari kwa mwenyeji, na huduma ipi ingemiliki? Hifadhidata inapaswa kufikiwa kutoka kwa mwenyeji au kutoka kwa mashine nyingine, au kutoka ndani ya handaki pekee?
Ikiwa hifadhidata inahitaji jina lake mwenyewe na programu haichapishi chochote, ziweke kwenye muunganisho tofauti. Ikiwa programu lazima ichapishe bandari na kila kitu kinapita kwenye handaki, weka hifadhidata katika nafasi ya majina ya VPN na tumia loopback. Kuchanganya vyote viwili hutoa staki inayoanza safi na kushindikana wakati wa kuunganisha.
Acha hifadhidata ilipo
Mabadiliko madogo huunganisha mmiliki wa nafasi ya majina na mtandao ambao tayari una hifadhidata. Programu hurithi muunganisho huo kwa sababu inashiriki staki ya vpn, na db hutatuliwa sawa na hapo awali.
services:
vpn:
networks:
- backend
app:
network_mode: service:vpn
db:
networks:
- backend
networks:
backend:Usiongeze networks kwenye programu pia. Compose hukataa sifa hiyo pamoja na network_mode katika huduma hiyo hiyo, na hitilafu huelekeza kwenye faili na si kwenye jozi. Ikiwa mteja wa VPN huchuja lengo la backend ndani ya nafasi yake ya majina, rekebisha pia sera yake ya mtandao wa ndani inayotumika; muunganisho wa pamoja hutoa njia lakini haubatilishi kichujio hicho.
Hamisha hifadhidata kwenye nafasi ya majina
Mabadiliko makubwa huweka hifadhidata katika nafasi hiyo hiyo ya majina na kuelekeza programu kwenye 127.0.0.1 na bandari halisi. Michakato miwili haiwezi yote kufunga anwani na bandari moja kwa sababu tu ilianza kwenye kontena tofauti, kwa hiyo hifadhidata inayosikiliza pia kwenye anwani ya wildcard itagongana na kitu kingine chochote kinachofanya hivyo. Angalia msikilizaji kabla ya kuihamisha.
Bandari zilizochapishwa ni za huduma inayomiliki nafasi ya majina. Kuongeza ports kwenye programu kunakataliwa pamoja na network_mode, na kubuni anwani tofauti ya programu hueleza kiolesura kisichokuwepo.
Utayari, uzuiaji na kitatuzi
depends_on hupanga uanzishaji wa kontena; si ushahidi kwamba handaki liko hai na haizuii trafiki handaki linapoanguka. Chukulia ufikivu, utayari wa handaki na uzuiaji wa hitilafu kama mahitaji matatu tofauti. Staki inayotimiza la kwanza pekee hupita jaribio la mkono siku nzuri na huvuja siku mbaya. Andika majibu matatu kando ya faili ya compose, mahali mtu anayefuata ataangalia.
Kushiriki nafasi ya majina pia humaanisha programu hurithi kitatuzi cha kontena la VPN, jambo ambalo husaidia handaki linaposukuma seva za DNS na huchanganya linapokosa kufanya hivyo. Angalia kile nafasi ya majina iliyomo kweli badala ya kudhani kitatuzi cha mwenyeji kinatumika. Rejeleo la huduma za Compose huandika network_mode, ports na tabia ya vitegemezi mahali pamoja, ikiwa ni pamoja na kwa nini huduma ya network_mode haina anwani yake mwenyewe.