现场是这样的。按文档拉取 compose 文件后启动,容器反复重启,浏览器访问端口没有任何响应。

中间走过弯路,把「镜像拉取失败,容器起不来」当成主因,改完现象没变。

真正麻烦的地方在于,几个原因的现象几乎一样。.env 文件没有从示例复制,关键变量为空;端口被本机其他服务占用;内存不足,数据库容器被系统杀掉。

复制环境变量模板再启动

cp .env.example .env

随后查看容器状态与日志定位失败原因

docker compose ps; docker compose logs --tail 100 api

然后确认端口占用情况

netstat -ano | findstr 80

调整配置后重新拉起

docker compose up -d

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

恢复的判定其实很直接。所有容器状态正常,浏览器能打开安装页面,完成初始化后可以创建应用。

这里还有个坑。内存不足时表现是容器随机重启,日志里看不到明显错误,先看机器剩余内存再排查配置。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189