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

Docker Compose添加日志配置项后重建容器卡住无法正常运行

问题描述

我们发现部分容器产生的日志量过大,若不限制日志大小,后续将会引发存储问题,相关技术方案给出了适配的解决思路。
使用的初始docker-compose配置如下:

version: "3.7"
services:
  rabbit:
    image: rabbitmq:1.0.4
    container_name: rabbitmq
    volumes:
      - mysql-designer-rabbitmq:/var/lib/rabbitmq/mnesia
    environment:
      - "RABBITMQ_DEFAULT_USER=user"
      - "RABBITMQ_DEFAULT_PASS=pw"
    ports:
      - "15674:15674"
      - "15672:15672"
      - "5672:5672"
      - "1883:1883"
    restart: unless-stopped
  mysql:
    image: mysql:1.0.5
    container_name: mysql
    volumes:
      - mysql-designer-db:/var/lib/mysql
    environment:
      - "MYSQL_ALLOW_EMPTY_PASSWORD=true"
      - "MYSQL_DATABASE=db"
      - "MYSQL_USER=user"
      - "MYSQL_PASSWORD=pw"
      - "MYSQL_ROOT_PASSWORD="
    depends_on:
      - rabbit
    restart: unless-stopped
    ports:
      - "3306:3306"
  sitestructure:
    image: sitestructure:319
    container_name: sitestructure
    volumes:
      - ./.docker/sitestructure/appsettings.json:/app/appsettings.json
    depends_on:
      - mysql
      - rabbit
    links:
      - mysql
      - rabbit
    ports:
      - "5000:5000"
    restart: unless-stopped
    deploy:
      restart_policy:
        condition: on-failure
        max_attempts: 10

后续给sitestructure服务新增了如下日志轮转配置:

logging:
    driver: "json-file"
    options:
        max-file: 5
        max-size: 10m

更新容器时命令行仅输出Recreating sitestructure ...,进程长时间无响应,只有移除新增的日志配置后Docker Compose才能正常运行。


解决方案

问题原因

该问题通常是旧sitestructure容器已经生成了超大体积的历史日志文件,Docker在重建容器时需要处理这些大体积日志,导致进程阻塞。

修复步骤

  1. 先手动清理旧容器资源
    执行以下命令停止并删除旧的sitestructure容器,跳过重建流程直接创建新容器:
docker stop sitestructure && docker rm sitestructure
docker-compose up -d
  1. 清理历史大日志文件
    如果删除旧容器后依然卡顿,可以先清理旧的超大日志:
# 查找sitestructure容器的日志存储路径
docker inspect --format='{{.LogPath}}' sitestructure
# 删除对应路径下的大日志文件
rm -f [上一步输出的日志路径]
  1. 全局配置日志规则(可选)
    如果需要所有容器都默认启用日志轮转,可以直接修改Docker daemon配置,无需每个服务单独配置:
    编辑/etc/docker/daemon.json文件,添加如下配置:
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

配置完成后重启Docker服务生效:

systemctl daemon-reload && systemctl restart docker

内容的提问来源于stack exchange,提问作者Daniel Adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:54:00