Puncte:0

Utilizarea dnsmasq într-un container Docker pentru gazdă și pentru rezoluția DNS internă Docker

drapel re

Lucrez la un proiect web care constă din mai multe servicii. Fiecare serviciu are propriul fișier docker-compose.yml care declară că este „aplicație” și posibilele dependențe (baze de date etc.). Pentru a le face pe toate să se joace frumos împreună, am construit un dev env local care le leagă împreună cu un proxy nginx care are blocuri de server cu nume de server adecvate și apoi proxy_passs solicitările către containerele reale folosind rețeaua Docker.

De asemenea, am adăugat dnsmasq într-un container, de asemenea, pentru a ajuta cu DNS, pentru a folosi numele de domenii local în loc de combo localhost:port (prin adăugarea unui resolver pentru testul tld la 127.0.0.1).

Proxy docker-compose:

Servicii:
    local-proxy:
        build: ./nginx
        porturi:
            - 80:80
            - 443:443

    local-proxy-dnsmasq:
        build: ./dnsmasq # se construiește peste 4km3/dnsmasq
        porturi:
            - „53:53/tcp”
            - „53:53/udp”
        cap_add:
            - NET_ADMIN
retele:
    Mod implicit:
        extern:
            nume: domeniu-local

dnsmasq.conf:

adresa-ascultă=0.0.0.0
interfață=eth0
utilizator=rădăcină

adresa=/.test/0.0.0.0

exemplu de server proxy nginx:

Server {
    nume_server login.domain.test;
    Locație / {
        # antete...
        proxy_pass http://domain-login:8080;
    }
}

exemplu docker-compose dintr-unul dintre servicii:

Servicii:
    autentificare-domeniu:
        construi: # ...
        retele:
            - Mod implicit
            - domeniu-local

Toate acestea funcționează perfect în browser, pot merge la chiriaș.domeniu.test , fiți redirecționat către login.domain.test...

Cu toate acestea, atunci când containerul care rulează tenant.domain.test trebuie să facă o cerere de curl din containerul său către unul dintre celelalte (de exemplu, login.domain.test pentru a finaliza fluxul de oauth), se întrerupe deoarece încearcă să rezolve login.domain.test mergând la sine:

root@6d25c2f5daf1:/var/www/app# nslookup login.domain.test
Server: 127.0.0.11
Adresa: 127.0.0.11#53

Răspuns neautorizat:
Nume: login.domain.test
Adresa: 0.0.0.0
;; conexiunea a expirat; niciun server nu a putut fi atins

Dacă schimb dnsmasq.conf din adresa=/.test/0.0.0.0 la adresa=/.test/10.0.1.102 (IP-ul atribuit în prezent computerului meu), totul funcționează. Cu toate acestea, desigur, aceasta nu este o soluție de lucru pentru colegi, de exemplu. Poate cineva să mă seteze pe calea Google corectă sau să aibă o soluție?

Puncte:1
drapel jp

Linia adresa=/.test/0.0.0.0 spune dnsmasq pentru a rezolva numele de domeniu Test la adresa IP 0.0.0.0. Adresa 0.0.0.0 este nu este o adresă IP validă. Este gestionat de unele browsere (de exemplu, Chrome) ca 127.0.0.1 dar este un comportament nestandard.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.