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

Docker部署TYPO3 v12项目遇404错误求助

TYPO3 v12 + Docker + Traefik 404 问题排查与修复

问题描述

使用Docker与Traefik部署的TYPO3 v12项目此前运行正常,近期访问http://myproject.localhost/typo3时突然出现404 page not found错误,不确定是否因文件损坏导致,需要调试与修复方案。

现有配置与日志

Traefik 配置

version: '3'
networks:
  web:
    external: true
services:
  traefik:
    image: traefik:v2.4
    container_name: traefik
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    restart: always
    ports:
      - "80:80"
      - "7000:8080" # The Web UI (enabled by --api)
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

项目 Docker Compose 配置

services:
  database:
    container_name: myproject_database
    image: mysql:8.0
    working_dir: /var/www/html
    volumes:
      - database:/var/lib/mysql:cached
    networks:
      - stack
    restart: always
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=true
      - MYSQL_DATABASE=myproject
      - MYSQL_USER=myproject
      - MYSQL_PASSWORD=myproject
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --sql_mode=''

  application:
    container_name: myproject_application
    build:
      context: .
      dockerfile: ./docker/application/application.Dockerfile
      args:
        USER_ID: $USER_ID
        GROUP_ID: $GROUP_ID
    depends_on:
      - database
    extra_hosts:
      - 'myproject.localhost:127.0.0.1'
    networks:
      - web
      - stack
    labels:
      - "traefik.enable=true"
      # Entity
      - "traefik.http.routers.myproject.rule=
          Host(`myproject.localhost`) ||
          Host(`360.myproject.localhost`)
      )"
      - "traefik.http.routers.myproject.entrypoints=web"
      - "traefik.http.routers.myproject_ssl.rule=
          Host(`myproject.localhost`) ||
          Host(`360.myproject.localhost`)
      "
      - "traefik.http.routers.myproject_ssl.entrypoints=websecure"
      - "traefik.http.routers.myproject_ssl.tls=true"
      - "traefik.http.services.myproject.loadbalancer.server.port=80"
      - "traefik.docker.network=web"
    working_dir: /var/www/html
    volumes:
      - ./docker/application/php.ini:/usr/local/etc/php/php.ini:cached
      - ./:/var/www/html
    restart: always

  tooling:
    container_name: myproject_tooling
    build:
      context: .
      dockerfile: ./docker/tooling/tooling.Dockerfile
      args:
        USER_ID: $USER_ID
        GROUP_ID: $GROUP_ID
    networks:
      - stack
    tty: true
    working_dir: /var/www/html
    volumes:
      - ./:/var/www/html
    restart: always

  caching:
    image: redis:7.0
    restart: always
    networks:
      - stack

networks:
  web:
    external: true
  stack:
    external: false

volumes:
  database:

Traefik 错误日志

time="2025-12-01T14:56:24Z" level=error msg="Provider connection error Error response from daemon: , retrying in 2.244889923s" providerName=docker

time="2025-12-01T14:56:27Z" level=error msg="Failed to retrieve information of the docker client and server host: Error response from daemon: " providerName=docker

time="2025-12-01T14:56:27Z" level=error msg="Provider connection error Error response from daemon: , retrying in 7.05598259s" providerName=docker

time="2025-12-01T14:56:34Z" level=error msg="Failed to retrieve information of the docker client and server host: Error response from daemon: " providerName=docker

time="2025-12-01T14:56:34Z" level=error msg="Provider connection error Error response from daemon: , retrying in 11.90132241s" providerName=docker

time="2025-12-01T14:56:46Z" level=error msg="Failed to retrieve information of the docker client and server host: Error response from daemon: " providerName=docker

time="2025-12-01T14:56:46Z" level=error msg="Provider connection error Error response from daemon: , retrying in 10.919562466s" providerName=docker

应用容器日志

other logs:
[Sun Nov 30 16:11:07.041728 2025] [mpm_prefork:notice] [pid 1:tid 1] AH00170: caught SIGWINCH, shutting down gracefully

[Mon Dec 01 14:31:02.162197 2025] [mpm_prefork:notice] [pid 1:tid 1] AH00163: Apache/2.4.65 (Debian) PHP/8.2.29 configured -- resuming normal operations

排查与修复步骤

1. 优先解决 Traefik 与 Docker 守护进程的连接问题

从Traefik日志看,核心问题是Traefik无法连接Docker守护进程,这会导致Traefik无法识别和路由到你的TYPO3应用容器,直接引发404。

  • 检查Docker套接字权限:
    Traefik容器挂载了/var/run/docker.sock,执行以下命令检查套接字权限:

    ls -l /var/run/docker.sock
    

    如果权限不是root:docker,执行:

    sudo chown root:docker /var/run/docker.sock
    sudo chmod 660 /var/run/docker.sock
    

    然后重启Traefik容器:

    docker restart traefik
    
  • 验证Traefik Web UI:
    访问http://localhost:7000,查看是否能看到已注册的路由myproject。如果看不到,说明Traefik没识别到应用容器,继续下一步。

  • 修复应用容器的Traefik标签语法错误:
    应用容器的myproject.rule末尾多了一个冗余的),修正后的标签应为:

    - "traefik.http.routers.myproject.rule=Host(`myproject.localhost`) || Host(`360.myproject.localhost`)"
    - "traefik.http.routers.myproject_ssl.rule=Host(`myproject.localhost`) || Host(`360.myproject.localhost`)"
    

    修正后重启应用容器:

    docker-compose restart application
    

2. 验证TYPO3应用本身的可用性

排除Traefik问题后,直接访问应用容器内部,确认TYPO3是否正常:

  • 进入应用容器内部测试:
    docker exec -it myproject_application curl http://localhost/typo3
    
    如果返回404,说明问题出在TYPO3本身:
    • 检查/var/www/html/typo3目录是否存在:
      docker exec myproject_application ls -l /var/www/html/typo3
      
      如果目录缺失,从备份恢复或重新部署TYPO3核心文件。
    • 检查Apache配置是否正确映射到TYPO3的public目录:
      查看应用容器内的Apache站点配置,确保DocumentRoot指向/var/www/html/public(TYPO3 v12的入口目录是public)。
    • 清除TYPO3缓存:
      使用tooling容器执行缓存清理:
      docker exec -it myproject_tooling php vendor/bin/typo3 cache:flush
      

3. 其他排查点

  • 检查Docker网络连通性:
    确认Traefik和应用容器都在web外部网络中:
    docker network inspect web
    
    确保两个容器都在该网络的Containers列表里。
  • 重启整个服务栈:
    若以上步骤无效,重启所有容器:
    docker-compose down && docker-compose up -d
    docker restart traefik
    

内容的提问来源于stack exchange,提问作者Mohamed Masmoudi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:14:52