我在运行docker compose up -d ,在执行lego-banckend运行失败

我在运行docker compose up -d ,在执行lego-banckend运行失败

1.又多次运行会出现这个错误

https://img1.sycdn.imooc.com//climg/630f725308c665f718971030.jpg

2. 我运行docker compose up -的 每次都是如图

https://img1.sycdn.imooc.com//climg/630f7ee90830fdfa18421020.jpg

然后我去看了docker日志,发现egg-monooose 连不上 服务截图

https://img1.sycdn.imooc.com//climg/630f7f8108ee37cc16000915.jpg

3. 然后我把容器镜像有关lego-backend该删的都删了,终端开启一个mongo的容器发现启动不上mongo 启动而是mongosh:截图

https://img1.sycdn.imooc.com//climg/630f804208f248f216000942.jpg

4然后我就修改 setup.sh 的mongo 为 mongosh 还是报错如图https://img1.sycdn.imooc.com//climg/630f80ec0878d08917791025.jpg

我 .env 设置的root 用户名和密码 和lego 数据库用户名密码 直接写的没有用字符串 

我的git地址 https://github.com/keepzc/keep-lego-backend


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好

再次分析一下你的问题,我本地能够跑起来了,说明应该不是啥代码级别的大问题

1  请注意一下本地开发使用的 config.default.ts 生产环境(docker)运行的是 config.prod.ts 

确保使用的正确的对应的用户名和密码

2 确保数据库启动成功,并且创建了对应的用户,使用 mongo 或者 mongosh 登录看一下

3 查看错误的 logs,写的还是比较清楚的,如果 docker 软件里面自带的看不清楚,可以使用 

// 查看所有的容器,包括错误被停止的容器
docker ps -a
docker logs contianerID(容器的ID,出错停止的也可以的)


Bruce_Y_ 2023-02-18 14:16:35

我也遇到了这个问题,后来发现是因为自己本地的 mongodb 服务也开着,可能端口占用,导致 docker 这边无法正常连接到对应的 mongodb 的端口。

张轩 2022-09-01 20:23:52

同学你好

我用你的repo 调试以后连上成功的启动了,调试过程如下:


首先先确定数据创建成功

可以单独启动 mongo 的镜像,然后 docker exec 进去。

然后

// 我这个镜像是有 mongo 没有 mongosh,你用 mongosh 也行
mongo -u viking --authenticationDatabase lego
// 然后弹出输出密码,成功登录,说明普通用户是创建成功的,如图所示

https://img1.sycdn.imooc.com//climg/6310a1bd09eda6ee15540314.jpg

然后两个一块启动,

问题在你的代码,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'
    }
};


最终成功启动

https://img1.sycdn.imooc.com//climg/6310a26609e49a7313600452.jpg


  • 提问者 keep7677850 #1

    张老师我还有个疑问,同样git仓库地址 , wins node版本16.14.2, Mac也是16.14.2, clone下代码来,wins就可以启动项目, Mac也能安装成功启动项目就会报错, 这2天用苹果开发 遇到这些奇怪问题,和开发环境或者网络有关系么

    2022-09-01 20:33:19
  • 提问者 keep7677850 #2

    老师我按照您的做法把auth Source删除了, 运行docker compose -d 还是连接不上mongo,还是不行

    .env 文件 已开始不上字符串, 改成字符串还是不行

    https://img1.sycdn.imooc.com//climg/6310b02108c6b9e419741280.jpg

    https://img1.sycdn.imooc.com//climg/6310b02108e29bab25481456.jpg

    https://img1.sycdn.imooc.com//climg/6310b0210824ea0916001051.jpg



    2022-09-01 21:15:21
  • 提问者 keep7677850 #3

    我本地也启动不起来了, 是不是因为本地启动不起来,所以运行docker compose -d 会报错

    https://img1.sycdn.imooc.com//climg/6310c77108ba00e316001095.jpg



    2022-09-01 22:54:18
张轩 2022-09-01 09:52:58

同学你好

这个问题我下班以后帮你运行代码看看,今天晚点答复你。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师