Docker Compose构建极慢,--verbose日志不足,如何启用调试日志?
解决docker-compose build卡顿、无详细日志的问题
我之前也碰到过类似的构建卡顿情况,结合你提供的环境信息和verbose日志,咱们可以从以下几个方向逐步排查:
1. 绕过compose直接构建,获取完整构建日志
从你的verbose日志能看到,docker-compose已经把构建请求交给docker build了,但--verbose只能输出compose层面的日志,看不到docker构建内部的细节。你可以直接用docker build命令单独构建目标服务,加上--progress=plain参数就能看到每一步的实时输出:
docker build --progress=plain -t someproject_someproject /opt/containers/sites/somesite.nz
这个命令会帮你定位到底是卡在了COPY大文件、RUN命令下载依赖,还是镜像拉取环节。
2. 升级Docker和docker-compose版本
你当前使用的Docker 19.03.8(2020年版本)和docker-compose 1.25.4都比较老旧,后续版本修复了很多构建性能相关的问题,比如镜像缓存优化、构建上下文传输效率提升等。建议升级到稳定版:
- Docker Engine可以升级到24.x系列
- docker-compose建议升级到V2版本(现在官方推荐使用
docker compose命令,已集成到Docker CLI中)
3. 优化构建上下文大小
构建时Docker会把docker-compose.yml所在的整个目录作为构建上下文发送给daemon,如果目录里有大量无关文件(比如日志、临时文件、node_modules、数据库备份),会大幅增加传输时间:
- 检查项目根目录的
.dockerignore文件,确保排除了不需要的内容,示例配置:*.log node_modules/ tmp/ backups/ .git/ - 如果项目目录过大,可以把Dockerfile移到只包含构建必需文件的子目录,缩小上下文范围。
4. 排查网络相关的构建步骤
如果你的Dockerfile里有apt-get install、pip install这类需要联网的命令,网络延迟或源的问题会导致构建卡顿:
- 替换为国内镜像源,比如apt用清华源、pip用阿里云源、npm用淘宝镜像
- 用
ping或curl测试源地址的连通性和延迟,确认网络是否稳定 - 如果使用私有镜像仓库,检查仓库的访问速度,或在本地缓存常用镜像
5. 检查Docker daemon的资源配置
服务器内存不足或磁盘IO瓶颈也会导致构建变慢:
- 用
free -h查看内存使用情况,确保有足够的空闲内存供Docker使用 - 修改
/etc/docker/daemon.json调整Docker的资源限制,示例:
修改后重启Docker服务:{ "default-shm-size": "2G", "memory": "4G" }systemctl restart docker - 用
iostat -x 1检查磁盘IO使用率,如果%util接近100%,说明磁盘IO饱和,需要清理磁盘或升级存储。
内容的提问来源于stack exchange,提问作者Liam Mitchell
相关产品推荐
相关产品推荐

