Сиз колдонмого network_mode: service:vpn кошосуз, стекти кайра иштетесиз жана колдонмо өлөт, анткени db мындан ары чечилбейт. compose файлында эч нерсе кайра аталган жок, ошондуктан ачык шектүүлөр — DNS жана маалымат базасы. Чыныгы өзгөрүү кичирээк жана таң калыштуу: колдонмо ошол ат бар Compose тармагынын мүчөсү болууну токтотту. Маалымат базасы кайсы аттар мейкиндигинен жооп бериши керектигин чечмегенче, хост атын оңдоонун баары божомол.

Эмне үчүн db хост аты чечилбей калды

network_mode колдонгон кызматтын Compose тармагында өз дареги жок; ал аталган кызматтын аттар мейкиндигин карызга алат. Бул мейкиндик өз интерфейстерин, маршруттарын, порт мейкиндигин жана чечүүчүсүн алып келет жана колдонмонун backend тармагына болгон байланышын алмаштырат. db аты эч качан абстракттуу болгон эмес: ал ошол тармакта жашап, анын ичине орнотулган DNS аркылуу чечилчү. Байланышты алып салыңыз, ат чечиле турган жер калбайт.

Муну хосттон эмес, контейнерлердин ичинен ырастаңыз. Колдонмодо ийгиликсиз болуп, маалымат базасынын контейнеринде ийгиликтүү болгон издөө аттын туура экенин, ал эми мүчөлүктүн туура эмес экенин билдирет. Бул жыйынтык оңдоону колдонмонун чечүүчү жөндөөлөрүнө эмес, compose топологиясына жайгаштырат.

Файлды оңдоодон мурун үч суроо

Аларга кезеги менен жооп бериңиз, анткени ар бири топологияны тарытат. Маалымат базасы эмнеге жооп бериши керек: башка контейнерлер колдонгон хост атынабы, же loopback'теги колдонмого ганабы? Колдонмо хостко порт жарыялашы керекпи, жана кайсы кызмат ага ээ болмок? Маалымат базасы хосттон же башка машинадан жеткиликтүү болушу керекпи, же туннелдин ичинен ганабы?

Эгер маалымат базасына өз аты керек болсо жана колдонмо эч нерсе жарыялабаса, аларды өзүнчө байланыштарда кармаңыз. Эгер колдонмо порт жарыялашы керек болсо жана баары туннелден өтсө, маалымат базасын VPN аттар мейкиндигине коюп, loopback колдонуңуз. Экөөнү аралаштыруу таза башталып, туташуу учурунда ийгиликсиз болгон стек жаратат.

Маалымат базасын өз ордунда калтырыңыз

Кичирээк өзгөрүү аттар мейкиндигинин ээсин маалымат базасы бар тармакка туташтырат. Колдонмо бул байланышты vpn стегин бөлүшкөндүктөн мураска алат, жана db мурункудай эле чечилет.

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

networks да колдонмого кошпоңуз. Compose ошол эле кызматта network_mode менен катар бул касиетти четке кагат, жана ката жупка эмес, файлга көрсөтөт. Эгер VPN кардары өз аттар мейкиндигинде backend багытын чыпкаласа, анын колдоого алынган жергиликтүү тармак саясатын да жөндөңүз; жалпы байланыш жол сунуштайт, бирок ал чыпканы жокко чыгарбайт.

Маалымат базасын аттар мейкиндигине жылдырыңыз

Чоңураак өзгөрүү маалымат базасын ошол эле аттар мейкиндигине коёт жана колдонмону чыныгы порт менен 127.0.0.1 дарегине багыттайт. Эки процесс ар башка контейнерлерде башталганы үчүн гана бирдей даректи жана портту экөө тең байланыштыра албайт, ошондуктан wildcard дарегинде да угуучу маалымат базасы муну кылган башка нерселердин баары менен кагылышат. Жылдыруудан мурун угуучуну текшериңиз.

Жарыяланган порттор аттар мейкиндигине ээ болгон кызматка таандык. Колдонмого ports кошуу network_mode менен катар четке кагылат, ал эми өзүнчө колдонмо дарегин ойлоп табуу жок интерфейсти сүрөттөйт.

Даярдык, блоктоо жана чечүүчү

depends_on контейнерлердин башталышын иреттейт; бул туннелдин иштеп жатканынын далили эмес жана туннел кулаганда трафикти токтотпойт. Жеткиликтүүлүктү, туннелдин даярдыгын жана бузулууларды блоктоону үч өзүнчө талап катары караңыз. Бир гана биринчисин канааттандырган стек жакшы күнү кол менен сыноодон өтөт жана жаман күнү агат. Үч жоопту compose файлынын жанына жазыңыз, кийинки адам ошол жерден карайт.

Аттар мейкиндигин бөлүшүү ошондой эле колдонмо VPN контейнеринин чечүүчүсүн мураска алат дегенди билдирет, бул туннел DNS серверлерин таңуулаганда жардам берет жана таңуулагабаганда адаштырат. Хосттун чечүүчүсү колдонулат деп божомолдоонун ордуна аттар мейкиндигинде чындыгында эмне бар экенин текшериңиз. Compose кызматтар маалымдамасы бир жерде network_mode, ports жана көз карандылыктардын жүрүм-турумун документтейт, анын ичинде network_mode кызматынын эмне үчүн өз дареги жок экенин.

Тектеш макалалар