Tôi đang làm việc trên một dự án web bao gồm nhiều dịch vụ. Mỗi dịch vụ đều có tệp docker-compose.yml riêng khai báo đó là "ứng dụng" và đó là các phụ thuộc có thể có (cơ sở dữ liệu, v.v.). Để tất cả chúng chơi tốt với nhau, tôi đã xây dựng một local dev env liên kết chúng với một proxy nginx có các khối máy chủ với tên máy chủ phù hợp và sau đó proxy_pass'es các yêu cầu tới các vùng chứa thực tế bằng cách sử dụng mạng của Docker.
Tôi cũng đã thêm dnsmasq vào vùng chứa để hỗ trợ DNS, để sử dụng tên miền cục bộ thay vì tổ hợp localhost:port (bằng cách thêm trình phân giải cho tld thử nghiệm thành 127.0.0.1).
Proxy docker-soạn thảo:
dịch vụ:
proxy cục bộ:
xây dựng: ./nginx
cổng:
- 80:80
- 443:443
cục bộ-proxy-dnsmasq:
bản dựng: ./dnsmasq # bản dựng trên 4km3/dnsmasq
cổng:
- "53:53/tcp"
- "53:53/udp"
cap_add:
- NET_ADMIN
mạng:
mặc định:
bên ngoài:
tên: tên miền-địa phương
dnsmasq.conf:
nghe-địa chỉ=0.0.0.0
giao diện = eth0
người dùng = gốc
địa chỉ=/.test/0.0.0.0
ví dụ máy chủ proxy nginx:
người phục vụ {
server_name login.domain.test;
địa điểm / {
# tiêu đề...
proxy_pass http://domain-login:8080;
}
}
ví dụ docker-compose của một trong các dịch vụ:
dịch vụ:
đăng nhập tên miền:
xây dựng: # ...
mạng:
- mặc định
- tên miền-địa phương
Tất cả điều này hoạt động hoàn toàn tốt trong trình duyệt, tôi có thể truy cập tenant.domain.test
, được chuyển hướng đến login.domain.test
...
Tuy nhiên, khi vùng chứa đang chạy tenant.domain.test phải thực hiện yêu cầu cuộn tròn từ vùng chứa của nó tới một trong các vùng chứa khác (ví dụ: login.domain.test để hoàn thành quy trình oauth), thì vùng chứa đó gặp trục trặc khi đang cố gắng giải quyết login.domain.test
bằng cách đi đến chính nó:
root@6d25c2f5daf1:/var/www/app# nslookup login.domain.test
Máy chủ: 127.0.0.11
Địa chỉ: 127.0.0.11#53
Câu trả lời không có thẩm quyền:
Tên: login.domain.test
Địa chỉ: 0.0.0.0
;; kết nối quá hạn; không thể truy cập máy chủ
Nếu tôi thay đổi dnsmasq.conf từ địa chỉ=/.test/0.0.0.0
đến địa chỉ=/.test/10.0.1.102
(IP hiện được gán cho máy tính của tôi), mọi thứ đều hoạt động. Tuy nhiên, đây tất nhiên không phải là một giải pháp hiệu quả cho đồng nghiệp chẳng hạn. Có ai có thể đặt tôi vào đúng đường dẫn Google có khả năng hoặc có cách khắc phục không?