Bạn có thể nhìn vào Docker Flow:Proxy để sử dụng như một easy- để cấu hình proxy ngược. NHƯNG, tôi tin rằng, như các nhà bình luận khác đã chỉ ra, chế độ swarm Docker 1.12 có một vấn đề cơ bản với nhiều dịch vụ phơi bày cùng một cổng (như 80 hoặc 8080). Nó tóm tắt (tôi nghĩ) với ma thuật định tuyến lưới - đó là một điều 4 cấp độ, có nghĩa là về cơ bản TCP/IP - nói cách khác, địa chỉ IP + cổng. Vì vậy, mọi thứ trở nên lộn xộn khi nhiều dịch vụ được liệt kê trên (ví dụ) cổng 8080. Bộ định tuyến lưới sẽ vui vẻ cung cấp lưu lượng truy cập đến cổng 8080 cho bất kỳ dịch vụ nào có cùng cổng.
Bạn CÓ THỂ cách ly mọi thứ với nhau bằng cách sử dụng mạng lớp phủ ở chế độ swarm, NHƯNG vấn đề xảy ra khi bạn phải kết nối dịch vụ với proxy (mạng che phủ) - tại thời điểm đó có vẻ như mọi thứ đã bị lẫn lộn (và điều này là nơi tôi đang gặp khó khăn). Giải pháp mà tôi có tại thời điểm này là để cho các dịch vụ cần phải được tiếp xúc với các cổng sử dụng thuần duy nhất khi mạng có liên quan đến proxy (lớp phủ) có liên quan (chúng KHÔNG phải được xuất bản lên các cổng). swarm!), và sau đó thực sự sử dụng một cái gì đó giống như Docker Flow Proxy để xử lý lưu lượng truy cập đến trên cổng mong muốn.
mẫu nhanh để giúp bạn có được tôi bắt đầu (khoảng dựa trên this:
docker network create --driver overlay proxy
docker network create --driver overlay my-app
# App1 exposed port 8081
docker service create --network proxy --network my-app --name app1 myApp1DockerImage
docker service create --name proxy \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
--network proxy \
-e MODE=swarm \
vfarcic/docker-flow-proxy
#App2 exposes port 8080
docker service create --network proxy --network my-app --name app2 myApp2DockerImage
Sau đó bạn cấu hình reverse proxy theo đó là documentation
LƯU Ý:. Tôi thấy bây giờ có mới AUTO cấu hình sẵn - Tôi chưa thử điều này.
Kết quả cuối cùng nếu mọi thứ đã hoạt động:
- ủy quyền lắng nghe trên cổng 80, 443 (và 8080 cho nó là cuộc gọi cấu hình, vì vậy giữ cho rằng OFF net công cộng!)
- ủy quyền chuyển tiếp đến dịch vụ thích hợp, dựa trên các
service domain
hoặc service path
(Tôi có vấn đề với service path
)
- dịch vụ có thể liên lạc nội bộ qua mạng lớp phủ riêng biệt.
- dịch vụ không công bố cổng không cần thiết để swarm
[EDIT 2016/10/20]
Bỏ qua tất cả những thứ trên về các vấn đề với cổng tiếp xúc tương tự trên mạng overlay cùng gắn liền với proxy.
Tôi xé thiết lập lỗ của mình và bắt đầu lại - mọi thứ đang hoạt động như mong đợi bây giờ: Tôi có thể truy cập nhiều dịch vụ khác nhau trên cổng 80, sử dụng các miền khác nhau, thông qua proxy lưu trữ docker.
Cũng sử dụng cấu hình tự động được đề cập - mọi thứ đang hoạt động như một nét duyên dáng.
Bối rối bởi câu hỏi. Không có gì docker cụ thể về việc không thể ánh xạ 2 thứ tới cùng một cổng. Chúng sẽ chạy trên cổng 80 bên trong thùng chứa của bạn nhưng bạn sẽ ánh xạ chúng tới các cổng bên ngoài khác nhau. – johnharris85
@JHarris yes i chỉnh sửa câu hỏi chính để chỉ định các cổng bên ngoài. Nhưng đó là mối quan tâm, sau khi bạn ánh xạ dịch vụ API 80 cổng đến cổng ngoài 80 nó không thể được ánh xạ lại cho giao diện Web dịch vụ – bitgandtter
Đúng, làm thế nào để bạn giải quyết điều này mà không cần docker? – johnharris85