我在运行docker compose up -d ,在执行lego-banckend运行失败
1.又多次运行会出现这个错误
2. 我运行docker compose up -的 每次都是如图
然后我去看了docker日志,发现egg-monooose 连不上 服务截图
3. 然后我把容器镜像有关lego-backend该删的都删了,终端开启一个mongo的容器发现启动不上mongo 启动而是mongosh:截图
4然后我就修改 setup.sh 的mongo 为 mongosh 还是报错如图
我 .env 设置的root 用户名和密码 和lego 数据库用户名密码 直接写的没有用字符串
我的git地址 https://github.com/keepzc/keep-lego-backend
34
收起
正在回答
4回答
同学你好
再次分析一下你的问题,我本地能够跑起来了,说明应该不是啥代码级别的大问题
1 请注意一下本地开发使用的 config.default.ts 生产环境(docker)运行的是 config.prod.ts
确保使用的正确的对应的用户名和密码
2 确保数据库启动成功,并且创建了对应的用户,使用 mongo 或者 mongosh 登录看一下
3 查看错误的 logs,写的还是比较清楚的,如果 docker 软件里面自带的看不清楚,可以使用
// 查看所有的容器,包括错误被停止的容器 docker ps -a docker logs contianerID(容器的ID,出错停止的也可以的)
张轩
2022-09-01 20:23:52
同学你好
我用你的repo 调试以后连上成功的启动了,调试过程如下:
首先先确定数据创建成功
可以单独启动 mongo 的镜像,然后 docker exec 进去。
然后
// 我这个镜像是有 mongo 没有 mongosh,你用 mongosh 也行 mongo -u viking --authenticationDatabase lego // 然后弹出输出密码,成功登录,说明普通用户是创建成功的,如图所示
然后两个一块启动,
问题在你的代码,config.default.ts 中
config.mongoose = { url: 'mongodb://localhost:27017/lego', options: { user: 'root', pass: '123456', // 因为配置文件是 merge 进去的,所以当 config.prod.ts 也会保留这个参数 // 所以它会尝试链接 admin 数据库,明显他是没有这个权限的,。所以就会链接失败 // 要注释掉,或者在 config.prod.ts 做对应的修改 // authSource: 'admin' } };
最终成功启动
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星