You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Traefik部署两个WordPress Docker容器失败问题排查

多WordPress站点部署问题排查与修复

核心问题分析

1. Traefik路由器名称冲突

两个站点的Traefik路由器(wordpresscp、wordpresscp-secured)使用了完全相同的名称,Traefik要求路由器名称全局唯一,重复名称会导致路由规则被覆盖或逻辑混乱,直接引发站点无法访问。

2. Redis主机端口冲突

两个站点的Redis服务都映射了主机端口6378:6378,主机端口无法被多个容器同时占用,第二个站点启动时会因端口占用失败,进而影响关联的WordPress服务运行。

3. 中间件名称重复(非致命但不规范)

两个站点都定义了名为redirect-to-https的中间件,虽然Traefik允许每个容器定义独立中间件,但统一名称易引发混淆,建议改为站点专属名称。

修复后的站点2配置示例

version: '3'

networks:
  traefik:
    external: true
  backend:

services:
  wordpress2:
    build:
      context: ./wordpress
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "3"
    environment:
      WORDPRESS_DB_HOST: db2:3306
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: PWB2
      WORDPRESS_DB_NAME: wordpressdb2
    volumes:
      - ./wordpress/data:/var/www/html
    networks:
      - traefik
      - backend
    depends_on:
        - db2
        - redis2
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik"
      # 重命名路由器为站点专属名称
      - "traefik.http.routers.wordpresscp2.rule=Host(`MYSITE2.org`)"
      - "traefik.http.routers.wordpresscp2.entrypoints=web"
      # 重命名中间件为站点专属名称
      - "traefik.http.middlewares.redirect-to-https2.redirectscheme.scheme=https"
      - "traefik.http.routers.wordpresscp2.middlewares=redirect-to-https2@docker"
      # 重命名HTTPS路由器为站点专属名称
      - "traefik.http.routers.wordpresscp2-secured.rule=Host(`MYSITE2.org`)"
      - "traefik.http.routers.wordpresscp2-secured.entrypoints=web-secure"
      - "traefik.http.routers.wordpresscp2-secured.tls=true"
      - "traefik.http.routers.wordpresscp2-secured.tls.certresolver=myhttpchallenge"

  db2:
    image: mysql:5.7
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "3"
    environment:
      MYSQL_DATABASE: wordpressdb2
      MYSQL_USER: USER
      MYSQL_PASSWORD: PWD2
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db2:/var/lib/mysql
    networks:
      - backend

  # 重命名Redis服务并修改主机映射端口
  redis2:
    image: redis:6
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "3"
    ports:
      - "6379:6378"  # 主机端口改为6379,避免与站点1的6378冲突
    networks:
      - backend
    entrypoint: redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru

额外注意事项

  • 确保站点1和站点2的所有Traefik相关资源(路由器、中间件)名称无重复,建议在名称后添加站点标识(如2)。
  • 主机端口映射需保证全局唯一,避免不同服务占用同一端口。
  • 无需修改Traefik的compose文件,只要确保Traefik的traefik外部网络存在且两个站点都正确连接即可。

内容的提问来源于stack exchange,提问作者Brian Holmes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:55:30