Adeeggaaga Compose wuxuu waqti dhaaf ku la kulmaa API browser-ka isla mishiinka ku furta isagoo aan wax cabasho ah qabin. Farqigaas ayaa ah tilmaanta: codsiga shaqeeya wuxuu ka baxaa host leh tunnel VPN, codsiga hakadka ahna wuxuu ka baxaa kontaynar leh stack shabakadeed u gaar ah. Waxba gudaha kontaynarada kama garanayo waddooyinka tunnel-ka, sidaas darteed goobta gaarka ah way sii ahaanaysaa mid aan la gaari karin si kasta oo magaca loo qoro. Xalku waa boodid ula kac ah oo dhex mara host-ka, ma aha shax waddo oo caqli badan.

Ka bilow sababta labada waddo ay u kala duwan yihiin, ka dibna go'aanso halka tunnel-ku ku noolaan doono.

Sababta host-ku u shaqeeyo kontaynaraduna u shaqayn

Kor u qaadida tunnel-ka waxay host-ka siinaysaa interface, waddooyin iyo, badanaa, diiwaanka resolver-ka ee VPN-ku bixiyo. Kontaynaradu wax ka ma dhaxasho taas: waxay ku bilaabataa hal interface oo ku yaal buundada matoorka iyo waddo caadi ah oo u tilmaamaysa buundadaas. Waddooyinka lagu rakibay host-ka waa kuwo aan la arkin wax kasta oo ku dhex socda booska magacaas.

Taasi waa sababta calaamaduhu ugu muuqdaan kuwo aan is waafaqsanayn ee aan ahayn kaliya jaban. Host-ku wuxuu xalliyaa magaca gaarka ah wuuna isku xiraa, sababtoo ah magaca iyo waddada labaduba halkaas ayay ku yaallaan. Kontaynaradu waxay baakadeeda u dirtayaa ciwaan gaar ah oo waxba ku yaal waddada buundada aan gaari karin, codsigaanna wuu waqti dhaafaa. Ku darista magaca faylka hosts ee kontaynarada waxba ma beddelo, sababtoo ah ciwaanka laftiisu waa mid aan laga gaari karin halka kontaynaradu fadhiisato.

Ka gaadh host-ka gudaha kontaynarada

Habka gudaha kontaynarada ee waca localhost wuxuu wacayaa kontaynarada. Docker Desktop wuxuu daabacaa host.docker.internal sidii magac dib u tilmaamaya mishiinka matoorka ku shaqeeya; matoorada Linux waxay ka tagaan mid aan qeexnayn ilaa adeeggu codsado, taasna waa waxa khariidadda hoose samaynayso. Taas oo ay la socoto, codsigu wuxuu bartilmaameedsadaa magac iyo deked halkii uu ka ahaan lahaa ciwaanka gaarka ah.

services:
  app:
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      INTERNAL_API_HOST: "host.docker.internal:8666"

Tunnel-ku wuxuu ku sii jirayaa dhinaca host-ka ee boodidda, dekedda ku jirta doorsoomahaasna waa tan proxy-gu dhagaysan doono. Kontaynarada lumisa tunnel-ka hadda waxay ku guuldareysataa hal boodid la yaqaan halkii ay isku dayi lahayd waddo aysan waligeed lahayn.

Dooro halka tunnel-ku ku nool yahay

Saddex qaab ayaa suurtagal u ah adeeg Compose oo u baahan API gaar ah, waxayna ku kala duwan yihiin habka ay leeyahay tunnel-ka. Macmiil VPN wuxuu ku shaqayn karaa sawirka kontaynarada gudahiisa, taas oo u baahan in la muujiyo aaladda tunnel-ka oo la siiyo awoodda maamulka shabakadda ee la socota. Codsigu wuxuu wadaagi karaa booska magaca shabakadda kontaynar tunnel gaar ah, sidaas darteed labada habba waxay arkaan hal stack iyo hal shax waddo. Ama tunnel-ku wuxuu ku sii jiri karaa host-ka, isagoo leh gudbin cidhiidhi ah oo host-ka ka yimaada kontaynarada.

Labada hore waxay soo jiitaan faylal profile, habdhaqanka dib u xidhidda iyo siyaasadda resolver-ka mashruuca gudihiisa, waxayna adeeg kasta oo faylka ku jira ka dhigaan mid ku tiirsan caafimaadka tunnel-ka. Taasi waa isku xirnaan badan hal wicitaan API. Stack horumarineed oo akhriya hal barta gudaha, gudbinta dhinaca host-ka waa isbeddelka ugu yar ee weli hayaa aqoonsiga meesha kooxda platform-ku ku maamusho.

Ku daabac hal waddo cidhiidhi ah host-ka

Ka bilow waxa gudbintu dhaxasho: ku socodsii xisaabta leh tunnel-ka, markaas soo-saarayaasheeda soket-ka waxay qaataan waddooyinka host-ka iyo resolver-ka host-ka. Hal block location oo nginx ah wuxuu daboolaa hal waddo.

server {
    listen 8666;
    location /search/ {
        proxy_pass http://10.20.30.40:8090/;
        proxy_set_header Host internal-api.example;
        proxy_read_timeout 60s;
    }
}

U qaado ciwaanka iyo dekedda sidii kuwo ku meel gaar ah oo geli lammaanaha API-gu dhab ahaan dhagaysanayo. Upstream kasta oo dheeraad ah wuxuu mudan yahay block location u gaar ah, block kastana waa inuu oggolaado kaliya waddooyinka adeeggan wacayo, si proxy-gu uusan u noqon albaab guud oo galo shabakadda gaarka ah. Ku xidh dhagayste xidhiidhka buundada macaamiisha ka yimaada host-gateway, loopback kaliya marka macmiilku wadaago booska magaca shabakadda host-ka, waligana ha ku xidhin 0.0.0.0. Sidoo kale dooro deked weli xor ah: lambar hore loo qaatay wuxuu ka tagaa proxy-gu mid aan dhagaysanayn halka kontaynaradu sii socoto waqti dhaaf, taas oo aan laga garan karin ciladdeeda shabakadeed ee aad ku bilowday.

Dekedaha, magacyada iyo go'aanka TLS

Xallinta magacyada waxay u qaybsantaa sida dariiqa. Raadinta guud ee kontaynarada waxay martaa resolver-ka matoorka, sidaas darteed magac gaar ah oo host-ka lagu xalliyo gudaha kontaynarada laguma xallin doono. Proxy-gu waa qaybta xallisa magaca gaarka ah, sababtoo ah wuxuu dhaxlaa resolver-ka host-ka.

TLS waa go'aanka dib loo dhigay ka dibna sharaxa ciladda xigta. Haddii proxy-gu baakadaha u gudbiyo isagoo aan taaban, kontaynaradu waxay arkaa shahaadada API-da laftiisa waxayna u baahan tahay CA gudaha kaydka kalsoonideeda. Haddii proxy-gu TLS dhammeeyo, kalsoonidaas waxay u guuraysaa host-ka codsiguna wuxuu bilaabaa inuu xidhiidhiyo ka dhiso madaxa host ee uu helo. Dooro hal habayn oo ku dhaqan geli kheyraad kasta, sababtoo ah dib u jeedinta ay soo saarto tan kale waxay tilmaamaysaa magac host ah oo kontaynaradu aanay xallin karin.

Ka xaqiiji gudaha adeegga

Codsiga ka dir kontaynarada, ma aha host-ka: curl caadi ah oo ku wajahan waddada proxy-ga, ka dib hubinta caafimaadka codsiga laftiisa. Marka proxy-gu jawaabo laakiin codsigu weli guuldareysto, isbarbar dhig saddex shay: URL-ka aasaasiga ah ee uu dhiso, doorsoome proxy ah oo ku jira deegaankiisa, iyo CA-da uu aaminsan yahay. Dhammaantood waxay ku jiraan deegaanka iyo diiwaannada kontaynarada, mid kastoo iyaga ka mid ah hagaajintuna VPN-ka ayay iska dhigtaa.

Qor habaynta la doortay README-ga mashruuca intay weli cusub tahay. Haddii kale qofka xiga ee la kulma waqtigan dhaafka ah wuxuu samayn doonaa galabnimadii la mid ah isagoo dib u ogaanaya in tunnel-ku host-ka ku nool yahay.

Maqaallo la xiriira