现场是这样的。按文档拉取 compose 文件后启动,容器反复重启,浏览器访问端口没有任何响应。
中间走过弯路,把「镜像拉取失败,容器起不来」当成主因,改完现象没变。
真正麻烦的地方在于,几个原因的现象几乎一样。.env 文件没有从示例复制,关键变量为空;端口被本机其他服务占用;内存不足,数据库容器被系统杀掉。
复制环境变量模板再启动
cp .env.example .env
随后查看容器状态与日志定位失败原因
docker compose ps; docker compose logs --tail 100 api
然后确认端口占用情况
netstat -ano | findstr 80
调整配置后重新拉起
docker compose up -d
这次没动代码,只在配置和运行环境上找原因。
隔了一天再看,现象没变,说明不是偶发。
恢复的判定其实很直接。所有容器状态正常,浏览器能打开安装页面,完成初始化后可以创建应用。
这里还有个坑。内存不足时表现是容器随机重启,日志里看不到明显错误,先看机器剩余内存再排查配置。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。