现象
用户在Windows 11宿主机上,因3307、3002端口被占用,计划修改FastGPT部署的docker-compose.yml配置,调整mysql、fastgpt服务端口。启动容器后服务无法正常运行,且提供的docker-compose.yml中mongo服务的entrypoint脚本未完整粘贴,内容截断为echo 'const isInited = rs.status().ok === 1\nif(!isInited){\n rs.initiate({\n _id: "rs0",\n member。本次部署使用的Docker版本为Client 26.0.0、Server 4.29.0。
可能原因
- 修改端口后未同步更新服务内部的监听端口配置,导致服务间无法正常建立连接;
- mongo服务的entrypoint脚本未完整,无法完成MongoDB副本集的初始化操作,导致容器启动失败;
- 端口映射配置与宿主机实际占用情况未完全匹配,引发端口冲突问题。
排查步骤
- 确认宿主机上计划使用的3307、3002等端口未被其他服务占用,可通过系统自带的端口检查工具完成验证;
- 检查docker-compose.yml文件中所有服务的端口映射配置,确保外部端口与内部容器端口的映射关系正确无误;
- 补全mongo服务的entrypoint脚本内容,确保包含完整的副本集初始化逻辑;
- 执行
docker-compose logs命令查看各容器的启动日志,定位具体的报错信息。
解决与验证
- 补全mongo服务的entrypoint脚本,确保副本集初始化命令完整,避免因脚本截断导致MongoDB无法正常启动;
- 再次确认所有修改后的端口在宿主机上无占用,调整配置中错误的端口映射关系;
- 执行
docker-compose down -v删除原有容器和数据卷(如需保留业务数据可跳过-v参数),再执行docker-compose up -d重新启动所有服务; - 访问修改后的fastgpt端口3002,验证服务是否可以正常加载并响应请求;
- 执行
docker ps命令查看pg、mongo等容器的运行状态,确认无异常退出情况。