dockercloud haproxy在不同端口上提供多个服务
是否可以使用多个后端服务配置dockercloud/haproxy,但在不同的端口上侦听?我正在尝试让docker compose配置在web前端的端口80上与nginx一起工作,然后在8080上运行Spring Boot应用程序的容器 默认情况下,haproxy会看到web和addressbook的链接容器(请参见下面的.yml文件),但默认情况下,haproxy会在端口80上公开这两个容器,因此Spring Boot容器不会在8080上接收流量 这个配置是否可行,或者我是否也需要运行两个不同的haproxy容器,一个用于web,另一个用于REST后端服务 这是我的docker-compose.yml:dockercloud haproxy在不同端口上提供多个服务,docker,spring-boot,docker-compose,haproxy,Docker,Spring Boot,Docker Compose,Haproxy,是否可以使用多个后端服务配置dockercloud/haproxy,但在不同的端口上侦听?我正在尝试让docker compose配置在web前端的端口80上与nginx一起工作,然后在8080上运行Spring Boot应用程序的容器 默认情况下,haproxy会看到web和addressbook的链接容器(请参见下面的.yml文件),但默认情况下,haproxy会在端口80上公开这两个容器,因此Spring Boot容器不会在8080上接收流量 这个配置是否可行,或者我是否也需要运行两个不同
version: '2'
#build:
# context: ./haproxy
# image: haproxy
# dockerfile: Dockerfile
services:
mongodata:
image: mongo:3.2
volumes:
- /data/db
entrypoint: /bin/bash
mongo:
image: mongo:3.2
depends_on:
- mongodata
volumes_from:
- mongodata
ports:
#only specify internal port, not external, so we can scale with docker-compose scale
- "27017"
addressbook:
image: addressbook
depends_on:
- mongo
environment:
- MONGODB_DB_NAME=addressbook
ports:
- "8080"
links:
- mongo
web:
image: docker-web-angularjs
ports:
- "80"
lb:
image: dockercloud/haproxy
#TODO: need to add an haproxy.cfg to configure for addressbook instances exposed behind 8080?
#or can be configured via container properties?
#image: haproxy
depends_on:
- addressbook
environment:
- STATS_PORT=1936
- STATS_AUTH="admin:password"
links:
- addressbook
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 8080:8080
- 1936:1936
您可以使用两个不同的路径公开这两个服务,这两个路径都位于haproxy容器的同一端口上。您可以使用环境变量
VIRTUAL\u HOST
为addressbook
和web
容器执行此操作:
addressbook:
image: addressbook
depends_on:
- mongo
environment:
- MONGODB_DB_NAME=addressbook
- VIRTUALHOST="/addressbook/*"
ports:
- "8080"
links:
- mongo
web:
image: docker-web-angularjs
environment:
- VIRTUALHOST="/web/*"
ports:
- "80"
不幸的是,默认情况下,haproxy不会删除web
或addressbook
路径,因此您需要更新这两个应用程序以管理“基本路径”。对我来说,使用它更容易实现目标
addressbook:
image: addressbook
depends_on:
- mongo
environment:
- MONGODB_DB_NAME=addressbook
labels:
- "traefik.backend=spring_boot"
- "traefik.protocol=http"
- "traefik.port=8080"
- "traefik.frontend.entryPoints=http_8080"
ports:
- "8080"
links:
- mongo
web:
image: docker-web-angularjs
labels:
- "traefik.backend=nginx"
- "traefik.protocol=http"
- "traefik.port=80"
- "traefik.frontend.entryPoints=http_80"
ports:
- "80"
lb:
image: traefik
command: "--web --web.address=8081 --docker --docker.domain=docker.localhost \
--logLevel=DEBUG \
--entryPoints='Name:http_80 Address::80' \
--entryPoints='Name:http_8080 Address::8080'"
ports:
- 80:80
- 8080:8080
- 8081:8081
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml