Siz ilovaga network_mode: service:vpn qo‘shasiz, stekni qayta ishga tushirasiz va ilova nobud bo‘ladi, chunki db endi hal qilinmaydi. compose faylida hech narsa qayta nomlanmagan, shuning uchun aniq gumondorlar — DNS va ma’lumotlar bazasi. Haqiqiy o‘zgarish kichikroq va g‘alatiroq: ilova o‘sha nom mavjud Compose tarmog‘ining a’zosi bo‘lishni to‘xtatdi. Ma’lumotlar bazasi qaysi nom maydonidan javob berishini hal qilmaguningizcha har bir xost nomi tuzatishi taxmin.

Nega db xost nomi hal qilinmay qoldi

network_mode ishlatadigan xizmatning Compose tarmog‘ida o‘z manzili yo‘q; u nomlangan xizmatning nom maydonini qarzga oladi. Bu maydon o‘z interfeyslari, marshrutlari, port maydoni va hal qiluvchisini olib keladi va ilovaning backend tarmog‘iga ulanishini almashtiradi. db nomi hech qachon mavhum bo‘lmagan: u o‘sha tarmoqda yashagan va uning ichki DNS orqali hal qilingan. Ulanishni olib tashlang, nomning hal qilinadigan joyi qolmaydi.

Buni xostdan emas, konteynerlar ichidan tasdiqlang. Ilovada muvaffaqiyatsiz, lekin ma’lumotlar bazasi konteynerida muvaffaqiyatli bo‘lgan qidiruv nom to‘g‘ri, a’zolik esa noto‘g‘ri ekanini bildiradi. Bu natija tuzatishni ilovaning hal qiluvchi sozlamalariga emas, compose topologiyasiga joylashtiradi.

Faylni tahrirlashdan oldingi uch savol

Ularga tartib bilan javob bering, chunki har biri topologiyani toraytiradi. Ma’lumotlar bazasi nimaga javob berishi kerak: boshqa konteynerlar ishlatadigan xost nomiga, yoki faqat loopback’dagi ilovaga? Ilova xostga port chiqarishi kerakmi, va qaysi xizmat unga egalik qiladi? Ma’lumotlar bazasi xostdan yoki boshqa mashinadan yetib borilishi kerakmi, yoki faqat tunnel ichidan?

Agar ma’lumotlar bazasiga o‘z nomi kerak bo‘lsa va ilova hech narsa chiqarmasa, ularni alohida ulanishlarda saqlang. Agar ilova port chiqarishi va hamma narsa tunneldan o‘tishi kerak bo‘lsa, ma’lumotlar bazasini VPN nom maydoniga qo‘ying va loopback’dan foydalaning. Ikkalasini aralashtirish toza boshlanib, ulanish paytida muvaffaqiyatsiz bo‘ladigan stek hosil qiladi.

Ma’lumotlar bazasini joyida qoldiring

Kichikroq o‘zgarish nom maydoni egasini ma’lumotlar bazasi allaqachon mavjud tarmoqqa ulaydi. Ilova bu ulanishni vpn stekini baham ko‘rgani uchun meros oladi va db avvalgidek hal qilinadi.

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

networks ni ilovaga ham qo‘shmang. Compose bir xil xizmatda network_mode bilan birga bu xususiyatni rad etadi va xato juftlikka emas, faylga ishora qiladi. Agar VPN mijozi o‘z nom maydoni ichida backend manzilini filtrlasa, uning qo‘llab-quvvatlanadigan mahalliy tarmoq siyosatini ham sozlang; umumiy ulanish yo‘l beradi, lekin bu filtrni bekor qilmaydi.

Ma’lumotlar bazasini nom maydoniga ko‘chiring

Kattaroq o‘zgarish ma’lumotlar bazasini o‘sha nom maydoniga joylashtiradi va ilovani haqiqiy port bilan 127.0.0.1 manziliga yo‘naltiradi. Ikki jarayon faqat turli konteynerlarda boshlangani uchun bir xil manzil va portni ikkalasi ham bog‘lay olmaydi, shuning uchun wildcard manzilda ham tinglaydigan ma’lumotlar bazasi buni qiladigan har qanday boshqa narsa bilan to‘qnashadi. Ko‘chirishdan oldin tinglovchini tekshiring.

Chiqarilgan portlar nom maydoniga ega xizmatga tegishli. Ilovaga ports qo‘shish network_mode bilan birga rad etiladi va alohida ilova manzilini o‘ylab topish mavjud bo‘lmagan interfeysni tasvirlaydi.

Tayyorlik, bloklash va hal qiluvchi

depends_on konteynerlar ishga tushishini tartibga soladi; bu tunnel ishlayotganining dalili emas va tunnel yiqilganda u trafikni to‘xtatmaydi. Yetib borish, tunnel tayyorligi va nosozliklarni bloklashni uchta alohida talab deb qarang. Faqat birinchisini qanoatlantiradigan stek yaxshi kunda qo‘l sinovidan o‘tadi va yomon kunda oqib ketadi. Uch javobni compose fayli yoniga yozing, keyingi odam qaraydigan joyga.

Nom maydonini baham ko‘rish shuni ham bildiradi: ilova VPN konteynerining hal qiluvchisini meros oladi, bu tunnel DNS serverlarini majburlaganda yordam beradi va majburlamaganda chalkashtiradi. Xostning hal qiluvchisi amal qiladi deb hisoblash o‘rniga nom maydonida aslida nima borligini tekshiring. Compose xizmatlari ma’lumotnomasi bir joyda network_mode, ports va bog‘liqliklar xatti-harakatini hujjatlashtiradi, jumladan nima uchun network_mode xizmatining o‘z manzili yo‘qligini.

O'xshash maqolalar