首页 > 解决方案 > 使用 docker 将 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 是一个 Angular 应用程序,其中 http 端点具有这种模式

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

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

标签: dockerdocker-composetraefik

解决方案


您正在使用 traefik 2,但您的注释适用于 traefik 1。这不起作用。


推荐阅读