You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署AdonisJS+Postgres+Mongo报ECONNREFUSED 127.0.0.1:3333错误

问题排查与解决步骤
  • 首先确认AdonisJS服务启动端口匹配问题:AdonisJS 默认监听端口为 3333,你当前的配置存在两处端口不匹配问题:
    1. Dockerfile 中 EXPOSE 声明的是 3000,但启动命令 node ace serve 没有指定端口,会默认监听3333,导致容器实际暴露端口和声明不一致
    2. docker-compose.yml 中 app 服务的端口映射配置为 3000:3000,和容器内实际监听的3333端口没有对应,无论外部访问还是内部服务连接都会触发连接拒绝
  • 优先修复端口配置,两种方案选其一即可:
    • 方案1:将启动端口指定为3000,把Dockerfile里的CMD指令修改为 CMD ["node", "ace", "serve", "--port=3000", "--host=0.0.0.0"],注意必须添加--host=0.0.0.0参数,否则Adonis默认仅监听容器内部的127.0.0.1,容器外部无法访问
    • 方案2:保留Adonis默认3333端口,把Dockerfile的EXPOSE值修改为3333,同时将docker-compose.yml中app服务的端口映射改成 3333:3333
  • 排查数据库连接配置问题:如果你的Adonis .env 配置文件中,数据库连接地址填写的是127.0.0.1也会触发连接错误,Docker容器内部访问同网络下的其他服务必须使用服务名作为域名:
    • Postgres连接地址填 db,对应docker-compose里postgres的服务名,端口填5432
    • Mongo连接地址填 mongo,对应docker-compose里mongo的服务名,端口填27017
  • 补充服务启动依赖配置:Docker Compose默认不会等数据库完全初始化完成再启动app服务,可能出现app先启动、连接数据库失败的问题,可以在app服务配置中添加depends_on字段,指定先启动数据库服务:
    app:
      build: .
      ports: 
        - 3000:3000
      volumes:
        - .:/usr/app
      depends_on:
        - db
        - mongo
    
  • 配置修改完成后,执行命令重新构建启动服务:docker-compose up --build
  • 如果仍有报错,可以进入app容器内部排查端口监听情况:执行docker-compose exec app netstat -tulpn 查看是否有进程在监听对应端口,也可以通过docker-compose logs app查看服务运行日志,定位具体报错原因。

内容的提问来源于stack exchange,提问作者Lucas Antonio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:24:02