是否可以使用多个后端服务配置dockercloud / haproxy但是在另一个端口上侦听?我试图让端口80上的nginx使用docker-compose配置进行Web前端,然后使用8080上的容器运行Spring Boot应用程序。
默认情况下,haproxy会看到web和addressbook的链接容器(请参阅下面的.yml文件),但默认情况下,它们都是由happroxy在端口80上公开的,因此Spring Boot容器永远不会在8080上接收流量
这个配置是否可行,或者我是否需要运行2个不同的haproxy容器,一个用于Web,一个用于REST后端服务?
到目前为止我的docker-compose.yml:
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
答案 0 :(得分:1)
对我而言,使用Traefik来实现目标更容易。
if ((a[i] > 0 && sum > INT_MAX - a[i]) || (a[i] < 0 && sum < INT_MIN - a[i]))
{
fprintf(stderr,"%s","Sum has overflown");
exit(1);
}
答案 1 :(得分:0)
您可以使用两个不同的路径公开这两个服务,这两个路径都位于haproxy容器的同一端口上。您可以使用VIRTUAL_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
路径,因此您需要更新这两个应用以管理“基本路径”。