Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dockercloud haproxy在不同端口上提供多个服务_Docker_Spring Boot_Docker Compose_Haproxy - Fatal编程技术网

dockercloud haproxy在不同端口上提供多个服务

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上接收流量 这个配置是否可行,或者我是否也需要运行两个不同

是否可以使用多个后端服务配置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:

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