使用docker配置traefik作为反向代理

时间:2020-05-04 15:23:29

标签: docker docker-compose traefik

我正在尝试将traefik配置为在3个docker容器之间进行连接。 我尝试使用此配置,但在浏览器控制台上获得了net :: ERR_NAME_NOT_RESOLVED。

  searchservice:
    hostname: searchservice
    image: searchservice:0.0.3-SNAPSHOT
    container_name: searchservice
    networks:
      - es-network 
          #ipv4_address: 172.21.0.12
    ports:
      - 8070:8080
    restart: always
    depends_on:
      - elasticsearch
      - reverseproxy
    labels:
      - "traefik.frontend.rule=PathPrefix:/searchservice,Host:localhost"
      - "traefik.port: 8070"
      - "traefik.enable=true"

  subscriber-service:
    hostname: subscriber-service
    image: subscriberservice:0.0.4-SNAPSHOT
    container_name: subscriber-service

    networks:
      - es-network 
          #ipv4_address: 172.21.0.13
    ports:
      - 8090:8090
    restart: always
    depends_on:
      - mongo1
      - mongo2
      - reverseproxy
    labels:
      - "traefik.frontend.rule=PathPrefix:/api,Host:localhost"
      - "traefik.port: 8090"
      - "traefik.enable=true"

  searchappfront:
    hostname: searchappfront
    image: frontservice:latest
    container_name: searchappfront
    networks:
      - es-network 
    ports:
      - 80:80
    restart: always
    depends_on:
      - subscriber-service
      - searchservice
      - reverseproxy
    labels:
      - "traefik.frontend.rule=PathPrefix:/"
      - "traefik.enable=true"
      - "traefik.port=80"
     # - "traefik.frontend.rule=Host:localhost"

  reverseproxy:
    image: traefik:v2.1
    command:
      - '--providers.docker=true'
      - '--entryPoints.web.address=:80'
      - '--providers.providersThrottleDuration=2s'
      - '--providers.docker.watch=true'
      - '--providers.docker.defaultRule=Host("local.me")'
      - '--accessLog.bufferingSize=0'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock:ro'
    #ports:
    #  - '80:80'
    #  - '8080:8080'

searchappfront是一个有角度的应用程序,其中http端点具有这种模式

http://subscriber-service:8090/
http://searchservice:8070/

如果我使用localhost而不是主机名,请求可以正常工作,但是我需要在云实例中部署这些容器。

1 个答案:

答案 0 :(得分:0)

您使用的是traefik 2,但您的注释适用于traefik 1。