使用MUP部署Meteor应用报不存在端点/容器错误,应用容器无法启动
MUP部署容器启动失败修复方案
故障核心原因:异常启停实例导致Docker网络残留旧容器端点、MongoDB数据目录权限/锁文件异常,MUP执行部署清理步骤时遇到元数据冲突中断,无法创建新的应用容器。
步骤1:修复异常的MongoDB服务
SSH登录EC2实例后依次执行:
- 停止并删除当前异常的Mongo容器
docker stop mongo docker rm mongo
- 修正Mongo数据目录权限(MUP默认数据路径为
/opt/mup/mongo,自定义路径请自行替换)
# 校验目录属主,Mongo官方镜像默认运行用户UID/GID为999 ls -ld /opt/mup/mongo # 属主不匹配时执行修正 sudo chown -R 999:999 /opt/mup/mongo
- 清理异常重启生成的锁文件
sudo rm -f /opt/mup/mongo/WiredTiger.lock
步骤2:清理Docker残留元数据
这一步是解决nonexistent endpoints报错的核心:
- 强制删除所有MUP相关残留容器
docker ps -a | grep -E "(mup|meteor|app)" | awk '{print $1}' | xargs -r docker rm -f
- 清理MUP自定义网络残留
# 查询MUP相关网络,默认网络名为mup-default docker network ls | grep mup # 删除查到的MUP网络 docker network rm mup-default # 若删除提示端点被占用,先强制断开占用连接再删除,替换<容器ID>为实际占用容器ID docker network disconnect -f mup-default <容器ID>
- 重启Docker服务刷新网络状态
sudo systemctl restart docker # 验证Docker状态为active (running)即可 systemctl status docker
步骤3:重新执行部署
回到本地项目的MUP配置目录,按顺序执行命令:
# 重新校验服务端环境配置 mup setup # 执行全量部署,加--verbose参数输出完整日志方便定位潜在问题 mup deploy --verbose
部署结果验证
部署完成后回到实例执行docker ps,确认名称带mup-前缀的应用容器、Mongo容器均为Up状态即可:
- 应用服务可正常访问
- MongoDB可通过SSH隧道正常连接
systemctl status mongo不再显示activating异常状态
故障原因补充
手动停止应用容器或异常重启实例后,Docker不会自动清理该容器在自定义网络上的端点记录,旧版本MUP执行部署前的清理逻辑时,会因为找不到对应容器/端点抛出提示,且不会自动跳过该错误中断后续流程,最终导致新容器无法创建。
内容的提问来源于stack exchange,提问作者Akolade Adesanmi
相关产品推荐
相关产品推荐

