Możesz zajrzeć na Docker Flow:Proxy do wykorzystania jako Easy- skonfigurować odwrotne proxy.
ALE, uważam, jak zauważyli inni komentatorzy, tryb roota w Dockerze 1.12 ma fundamentalny problem z wieloma usługami odsłaniającymi ten sam port (np. 80 lub 8080). Sprowadza się (myślę) do magii przekierowywania sieci - co jest czwartą rzeczą na poziomie 4, co oznacza w zasadzie TCP/IP - innymi słowy, adres IP + port. Rzeczy stają się nieporządne, gdy wiele usług znajduje się na (na przykład) porcie 8080. Router sieciowy z przyjemnością dostarczy ruch przechodzący do portu 8080 wszystkim usługom, które eksponują ten sam port.
MOŻESZ izolować się od siebie nawzajem za pomocą nakładki sieciowej w trybie roju, ALE problem pojawia się, gdy musisz połączyć usługi z proxy (sieć nakładkowa) - w tym momencie wygląda na to, że coś się pomyli (i to gdzie mam teraz trudności).
Rozwiązaniem, które mam w tym momencie, jest umożliwienie usługom, które muszą być narażone na użycie portów sieciowych, unikalnych w odniesieniu do sieci zorientowanej na proxy (nakładka) (NIE muszą one być publikowane w rój!), a następnie używają czegoś podobnego do Docker Flow Proxy do obsługi ruchu przychodzącego na żądanym porcie.
Szybkie próbka Ci zacząłem (w przybliżeniu na podstawie 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
wtedy skonfigurować reverseProxy jak na to documentation
. UWAGA: Teraz widzę, że jest nowy dostępny AUTO konfiguracja - Jeszcze nie próbowałem tego.
Wynik końcowy, jeśli wszystko zadziałało:
- proxy nasłuchuje na portach 80, 443 (oraz 8080 dla jego połączenia konfiguracyjne, więc miej to od sieci publicznej!)
- proxy przodu do odpowiedniej usługi, oparte zarówno na
service domain
lub service path
(miałem problemy z service path
)
- usługi mogą być przekazywane wewnętrznie przez izolowaną sieć nakładkową.
- usługi nie publikuje porty niepotrzebnie roju
[EDIT 20.10.2016]
Ignoruj wszystkie rzeczy powyżej o problemach z tym samym narażone portu w tej samej sieci nakładki załączonym do pełnomocnika.
Podniosłem konfigurację otworów i zacząłem od nowa - wszystko działa zgodnie z oczekiwaniami: mogę uzyskać dostęp do wielu (różnych) usług na porcie 80, używając różnych domen, za pośrednictwem proxy przepływu dokowanego.
Używanie wspomnianej autokonfiguracji - wszystko działa jak urok.
Zmieszany z pytaniem. Nie ma nic doker specyficzne o nie można mapować 2 rzeczy do tego samego portu. Będą działać na porcie 80 w twoim kontenerze, ale mapujesz je na różne porty zewnętrzne. – johnharris85
@JHarris tak, edytuję główne pytanie, aby określić porty zewnętrzne. Ale to jest problem, po zamapowaniu interfejsu API na port 80 na port zewnętrzny 80, nie można go ponownie zmapować dla interfejsu sieciowego usługi – bitgandtter
Prawidłowo, jak rozwiązać ten problem bez dokowania? – johnharris85