Score:0

การใช้ dnsmasq ในคอนเทนเนอร์ Docker สำหรับโฮสต์และสำหรับการแก้ไข DNS ภายในของ Docker

ธง re

ฉันกำลังทำงานในโครงการเว็บที่ประกอบด้วยหลายบริการ ทุกบริการมีไฟล์ docker-compose.yml ของตัวเองที่ประกาศว่าเป็น "แอป" และอาจขึ้นต่อกันได้ (ฐานข้อมูล ฯลฯ) เพื่อให้พวกเขาทั้งหมดเล่นด้วยกันอย่างสวยงาม ฉันได้สร้าง local dev env ที่เชื่อมโยงพวกเขาเข้าด้วยกันด้วยพร็อกซี nginx ที่มีบล็อกเซิร์ฟเวอร์ที่มีชื่อเซิร์ฟเวอร์ที่เหมาะสม จากนั้นจึงส่งคำขอไปยังคอนเทนเนอร์จริงโดยใช้ proxy_pass'es โดยใช้เครือข่ายของ Docker

ฉันได้เพิ่ม dnsmasq ในคอนเทนเนอร์ด้วยเพื่อช่วยเหลือ DNS เพื่อใช้ชื่อโดเมนในเครื่องแทน localhost:port combo's (โดยเพิ่มตัวแก้ไขสำหรับการทดสอบ tld เป็น 127.0.0.1)

เขียนพร็อกซีนักเทียบท่า:

บริการ:
    พร็อกซีท้องถิ่น:
        สร้าง: ./nginx
        พอร์ต:
            - 80:80
            - 443:443

    local-proxy-dnsmasq:
        สร้าง: ./dnsmasq # สร้างที่ด้านบนของ 4km3/dnsmasq
        พอร์ต:
            - "53:53/tcp"
            - "53:53/udp"
        cap_add:
            - NET_ADMIN
เครือข่าย:
    ค่าเริ่มต้น:
        ภายนอก:
            ชื่อ: โดเมนท้องถิ่น

dnsmasq.conf:

ฟังที่อยู่ = 0.0.0.0
อินเทอร์เฟซ = eth0
ผู้ใช้ = ราก

ที่อยู่=/.test/0.0.0.0

ตัวอย่างพร็อกซีเซิร์ฟเวอร์ nginx:

เซิร์ฟเวอร์ {
    server_name login.domain.test;
    ที่ตั้ง / {
        #ส่วนหัว...
        proxy_pass http://domain-login:8080;
    }
}

ตัวอย่างนักเทียบท่าประกอบด้วยหนึ่งในบริการ:

บริการ:
    โดเมนเข้าสู่ระบบ:
        สร้าง: # ...
        เครือข่าย:
            - ค่าเริ่มต้น
            - โดเมนท้องถิ่น

ทั้งหมดนี้ทำงานได้ดีในเบราว์เซอร์ ฉันสามารถไปที่ tenant.domain.test , รับการเปลี่ยนเส้นทางไปที่ เข้าสู่ระบบ.domain.test...

อย่างไรก็ตาม เมื่อคอนเทนเนอร์ที่รัน tenant.domain.test ต้องส่งคำขอ curl จากคอนเทนเนอร์ไปยังคอนเทนเนอร์อื่น (เช่น login.domain.test เพื่อดำเนินการโฟลว์ oauth ให้เสร็จสิ้น) คอนเทนเนอร์จะหยุดทำงานเนื่องจากกำลังพยายามแก้ไข เข้าสู่ระบบ.domain.test โดยไปที่ตัวเอง:

root@6d25c2f5daf1:/var/www/app# nslookup login.domain.test
เซิร์ฟเวอร์: 127.0.0.11
ที่อยู่: 127.0.0.11#53

คำตอบที่ไม่ได้รับอนุญาต:
ชื่อ: login.domain.test
ที่อยู่: 0.0.0.0
;; หมดเวลาการเชื่อมต่อ; ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้

ถ้าฉันเปลี่ยน dnsmasq.conf จาก ที่อยู่=/.test/0.0.0.0 ถึง ที่อยู่ =/.test/10.0.1.102 (IP ที่กำหนดในปัจจุบันของคอมพิวเตอร์ของฉัน) ทุกอย่างทำงานได้ อย่างไรก็ตาม แน่นอนว่านี่ไม่ใช่วิธีแก้ปัญหาที่ได้ผลสำหรับเพื่อนร่วมงาน ทุกคนสามารถกำหนดให้ฉันอยู่บนเส้นทาง Google ที่ถูกต้องหรือมีวิธีแก้ไขได้ไหม

Score:1
ธง jp

เส้น ที่อยู่=/.test/0.0.0.0 บอก dnsmasq เพื่อแก้ไขชื่อโดเมน ทดสอบ ไปยังที่อยู่ IP 0.0.0.0. ที่อยู่ 0.0.0.0 เป็น ไม่ใช่ที่อยู่ IP ที่ถูกต้อง. มันถูกจัดการโดยบางเบราว์เซอร์ (เช่น chrome) เช่น 127.0.0.1 แต่เป็นพฤติกรรมที่ไม่ได้มาตรฐาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา