Rydych chi’n ychwanegu network_mode: service:vpn at yr ap, yn ailgychwyn y stac, ac mae’r ap yn marw oherwydd nad yw db yn datrys mwyach. Ni ailenwyd unrhyw beth yn y ffeil compose, felly’r amheuwyr amlwg yw DNS a’r gronfa ddata. Mae’r newid go iawn yn llai ac yn rhyfeddach: mae’r ap wedi rhoi’r gorau i fod yn aelod o rwydwaith Compose lle mae’r enw hwnnw’n bodoli. Hyd nes y byddwch chi’n penderfynu o ba ofod enw y dylai’r gronfa ddata ateb, mae pob cywiriad enw gwesteiwr yn ddyfaliad.

Pam y stopiodd enw gwesteiwr db ddatrys

Nid oes gan wasanaeth sy’n defnyddio network_mode gyfeiriad ei hun ar rwydwaith Compose; mae’n benthyca gofod enw’r gwasanaeth a enwir. Mae’r gofod enw hwnnw’n dod â’i ryngwynebau, ei lwybrau, ei ofod porthladd a’i ddatryswr ei hun, ac mae’n disodli ymlyniad yr ap i’r rhwydwaith backend. Ni fu’r enw db yn haniaethol erioed: roedd yn byw ar y rhwydwaith honno ac yn datrys trwy ei DNS mewnbliedig. Tynnwch yr ymlyniad ac nid oes gan yr enw le i ddatrys.

Cadarnhewch hynny o du mewn i’r cynwysyddion yn hytrach nag o’r gwesteiwr. Mae chwiliad sy’n methu yn yr ap ond yn llwyddo yng nghynhwysydd y gronfa ddata yn golygu bod yr enw’n iawn a’r aelodaeth ddim. Mae’r canlyniad hwnnw hefyd yn gosod y cywiriad yn nhopoleg compose yn hytrach nag yng ngosodiadau datryswr yr ap.

Tair cwestiwn cyn i chi olygu’r ffeil

Atebwch y rhain yn eu trefn, oherwydd mae pob un yn culhau’r dopoleg. Ar beth y dylai’r gronfa ddata ateb: enw gwesteiwr y mae cynwysyddion eraill yn ei ddefnyddio, neu’r ap yn unig ar loopback? A ddylai’r ap gyhoeddi porthladd i’r gwesteiwr, a pha wasanaeth fyddai’n berchen arno? A ddylai’r gronfa ddata fod yn gyrraeddadwy o’r gwesteiwr neu o beiriant arall, neu o du mewn i’r tiwnel yn unig?

Os oes angen ei henw ei hun ar y gronfa ddata ac nad yw’r ap yn cyhoeddi dim, cadwch nhw ar ymlyniadau ar wahân. Os rhaid i’r ap gyhoeddi porthladd ac mae popeth yn llifo trwy’r tiwnel, rhowch y gronfa ddata yng ngofod enw’r VPN a defnyddiwch loopback. Mae cymysgu’r ddau yn cynhyrchu stac sy’n cychwyn yn lân ac yn methu ar adeg cysylltu.

Cadwch y gronfa ddata lle mae hi

Mae’r newid llai yn cysylltu perchennog y gofod enw â’r rhwydwaith sydd eisoes yn cynnwys y gronfa ddata. Mae’r ap yn etifeddu’r ymlyniad hwnnw oherwydd ei fod yn rhannu’r stac vpn, ac mae db yn datrys yn union fel o’r blaen.

services:
  vpn:
    networks:
      - backend
  app:
    network_mode: service:vpn
  db:
    networks:
      - backend
networks:
  backend:

Peidiwch ag ychwanegu networks at yr ap hefyd. Mae Compose yn gwrthod yr eiddo hwnnw ochr yn ochr â network_mode yn yr un gwasanaeth, ac mae’r gwall yn pwyntio at y ffeil yn hytrach nag at y pâr. Os yw cleient VPN yn hidlo’r cyrchfan backend o fewn ei ofod enw, addaswch ei bolisi rhwydwaith lleol a gefnogir hefyd; mae ymlyniad a rennir yn cynnig llwybr ond nid yw’n diystyru’r hidlydd hwnnw.

Symudwch y gronfa ddata i’r gofod enw

Mae’r newid mwy yn rhoi’r gronfa ddata yn yr un gofod enw ac yn cyfeirio’r ap at 127.0.0.1 gyda’r porthladd go iawn. Ni all dau broses rwymo’r un cyfeiriad a’r un porthladd dim ond oherwydd iddynt gychwyn mewn cynwysyddion gwahanol, felly bydd cronfa ddata sy’n gwrando hefyd ar y cyfeiriad wildcard yn gwrthdaro â phopeth arall sy’n gwneud hynny. Gwiriwch y gwrandawr cyn ei symud.

Mae porthladdoedd cyhoeddedig yn perthyn i’r gwasanaeth sy’n berchen ar y gofod enw. Mae ychwanegu ports at yr ap yn cael ei wrthod ochr yn ochr â network_mode, ac mae dyfeisio cyfeiriad ap ar wahân yn disgrifio rhyngwyneb nad yw’n bodoli.

Parodrwydd, blocio a’r datryswr

Mae depends_on yn trefnu cychwyn cynwysyddion; nid yw’n dystiolaeth bod y tiwnel i fyny, ac nid yw’n atal traffig pan fydd y tiwnel yn cwympo. Triniwch gyrraeddadwyedd, parodrwydd y tiwnel a blocio methiannau fel tair gofyniad ar wahân. Mae stac sy’n bodloni’r cyntaf yn unig yn pasio prawf â llaw ar ddiwrnod da ac yn gollwng ar ddiwrnod drwg. Ysgrifennwch y tri ateb wrth ymyl y ffeil compose, lle bydd y person nesaf yn edrych.

Mae rhannu gofod enw hefyd yn golygu bod yr ap yn etifeddu datryswr cynhwysydd y VPN, sy’n helpu pan fydd y tiwnel yn gwthio gweinyddwyr DNS ac yn drysu pan nad yw. Gwiriwch beth sydd yn y gofod enw mewn gwirionedd yn hytrach na chymryd bod datryswr y gwesteiwr yn gymwys. Mae cyfeirlyfr gwasanaethau Compose yn dogfennu network_mode, ports ac ymddygiad dibyniaethau mewn un man, gan gynnwys pam nad oes gan wasanaeth network_mode gyfeiriad ei hun.

Erthyglau cysylltiedig