当前位置: 首页 > news >正文

Traefik应用:配置容器多个网络时无法访问问题

Traefik应用:配置容器多个网络时无法访问问题

  • 介绍
    • 解决方法
      • 问题原因: **容器多网络归属导致 Traefik 无法正确发现路由规则**。
      • 解决方案
        • 方法 1:将应用容器 **仅连接** 到 `traefik-public` 网络
        • 方法 2:显式指定 Traefik 监听的网络
      • 完整配置示例
      • 其他相关验证步骤

介绍

使用traefik代理部署项目时遇到一个问题:

Traefik容器所在的网络也是traefik-public,而配置容器服务使用了两个网络,一个是default,另一个是traefik-public,导致部署后一直无法访问容器服务。


解决方法

问题原因: 容器多网络归属导致 Traefik 无法正确发现路由规则

Traefik 默认只会监听 与自身同一 Docker 网络 的容器标签。你的应用容器同时连接了 defaulttraefik-public 网络,但 Traefik 只监听了 traefik-public 网络,导致路由规则未被正确识别。


解决方案

方法 1:将应用容器 仅连接traefik-public 网络

docker-compose.yml 中强制应用容器 只使用 traefik-public 网络,避免多网络干扰。

services:
  app:
    networks:
      - traefik-public  # 仅保留 traefik-public 网络
    labels:
      - traefik.enable=true
      - traefik.http.routers.app.rule=Host(`app.localhost`)
      - traefik.http.routers.app.entrypoints=http
      - traefik.http.services.app.loadbalancer.server.port=3000

networks:
  traefik-public:
    external: true  # 确保该网络已提前创建
方法 2:显式指定 Traefik 监听的网络

在 Traefik 的启动命令中,通过 --providers.docker.network=traefik-public 参数强制指定监听的网络。(具体参考Traefik Docker Network Config)

services:
  traefik:
    command:
      - --api.insecure=true
      - --providers.docker
      - --providers.docker.network=traefik-public  # 关键参数
      - --entrypoints.web.address=:80

完整配置示例

version: '3'

services:
  traefik:
    image: traefik:v2.5
    command:
      - --api.insecure=true
      - --providers.docker
      - --providers.docker.network=traefik-public  # 指定监听 traefik-public 网络
      - --entrypoints.web.address=:80
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - traefik-public

  app:
    image: your-app-image:latest
    networks:
      - traefik-public  # 仅连接 traefik-public 网络
    labels:
      - traefik.enable=true
      - traefik.http.routers.app.rule=Host(`app.localhost`)
      - traefik.http.routers.app.entrypoints=web
      - traefik.http.services.app.loadbalancer.server.port=3000

networks:
  traefik-public:
    external: true  # 确保提前运行 docker network create traefik-public

其他相关验证步骤

  1. 确保网络存在

    docker network create traefik-public  # 若未创建则先执行
    
  2. 重启服务

    docker-compose down && docker-compose up -d
    
  3. 检查 Traefik 日志

    docker-compose logs traefik | grep "app"  # 确认路由规则已加载
    
  4. 验证网络连通性

    docker exec -it your_app_container curl http://traefik:80  # 测试容器间通信
    

相关文章:

  • LeetCode.02.04.分割链表
  • Python深度学习基础——卷积神经网络(CNN)(PyTorch)
  • 第二章:Docker及Kubernetes基础 重难点详解_《再也不踩坑的kubernetes实战指南》
  • Simulink中Signal Builder在新版中找不到怎么办
  • leetcode12.整数转罗马数字
  • 从入门到进阶:React 图片轮播 Carousel 的奇妙世界!
  • linux查询inode使用率
  • Spring MVC 视图解析器(JSP、Thymeleaf、Freemarker、 JSON/HTML、Bean)详解
  • XML语法指南——从入门到精通
  • C#里使用WPF的MaterialDesignThemes
  • 回归预测 | Matlab实现RIME-CNN-GRU-Attention霜冰优化卷积门控循环单元注意力机制多变量回归预测
  • UM621系列模块安装校准及注意事项
  • 逍遥模拟器ARM过检测技术全解析
  • 使用mybatisplus-join自带的分页方法进行分页查询,不依靠pagehelper
  • 表 vs 物化视图:核心区别与选型指南
  • Asynchronous Advantage Actor-Critic(A3C)
  • Xcode为不同环境配置不同的环境变量
  • docker部署certimateSSL证书管理自动续签
  • SAP 一个屏幕多ALV 例子
  • RabbitMQ惰性队列的工作原理、消息持久化机制、同步刷盘的概念、延迟插件的使用方法
  • 廊坊网站群建设/网站制作费用多少
  • 学做内账的网站/中山360推广
  • 建网站哪个好/怎样创建网站平台
  • 网页布局有哪几种方法/云南网站seo服务
  • 在线公司网站查询/seo自学教程推荐
  • 衡水安徽学校网站建设/佛山快速排名