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

Docker Compose容器通信失败:测试脚本无法访问server-test服务

排查Docker Compose中Tester容器无法连接Server-Test的问题

以下是可能导致连接失败的原因及对应的排查/解决步骤:

1. depends_on仅保证容器启动,不保证服务就绪

Docker Compose的depends_on只会等待server-test容器启动完成,但不会等待容器内的Node服务完全初始化并开始监听端口。当tester启动时,server-test的服务可能还没准备好接收请求,直接导致连接被拒绝。

解决办法:
在tester的启动流程中添加等待逻辑,确保服务就绪后再执行测试:

  • 方式一:集成wait-for-it脚本到tester镜像中
    修改tester的Dockerfile:
    # 在COPY步骤前添加
    ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /usr/local/bin/wait-for-it.sh
    RUN chmod +x /usr/local/bin/wait-for-it.sh
    # 修改CMD
    CMD wait-for-it.sh server-test:38478 -- yarn jest
    
  • 方式二:在docker-compose.yml中直接添加轮询逻辑
    tester:
      # ...其他配置
      command: sh -c "until curl -s http://server-test:38478/testing/clearDb; do sleep 1; done; yarn jest"
    

2. server-test容器未持续运行服务

检查server-test的启动命令yarn server secret是否为长期运行的服务启动命令。如果该命令是一次性任务(比如仅生成密钥后就退出),容器会直接停止,导致tester无法连接。

验证方式:

  • 执行docker compose ps server-test查看容器状态,若状态为Exited则说明服务未持续运行
  • 查看容器日志:docker compose logs server-test,确认命令执行结果

解决办法:
修改server-test的command为真正启动服务的命令,比如yarn start或pm2 start <服务入口文件>,确保容器保持运行状态。

3. 确认server-test服务实际监听的端口与地址

虽然Dockerfile中声明了EXPOSE 38478/tcp,但需确认Node服务代码中确实监听38478端口,且绑定地址为0.0.0.0(而非localhost,否则容器外部无法访问)。

验证方式:

  • 进入server-test容器:docker compose exec server-test bash
  • 安装net-tools(若未安装):apt install net-tools,然后执行netstat -tulpn,查看是否有进程监听0.0.0.0:38478

解决办法:
检查Node服务的配置文件或启动参数,确保端口设置为38478,监听地址为0.0.0.0。

4. 检查server-test容器是否正常运行

如果server-test容器启动失败或崩溃,tester自然无法连接。

验证方式:

  • 执行docker compose ps查看所有容器状态,确保server-test的状态为Up
  • 查看启动日志:docker compose logs server-test,排查是否有启动错误(如依赖缺失、配置错误等)

5. 确认容器在同一网络中

Docker Compose默认会为项目创建共享网络,但如果手动修改过网络配置,可能导致tester和server-test不在同一网络,无法通过服务名通信。

验证方式:

  • 执行docker network ls找到当前项目的网络,然后执行docker network inspect <网络名称>,确认两个容器都在该网络中

解决办法:
如果网络配置异常,删除现有网络后重新启动:docker compose down -v,再执行docker compose up -d server-test


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:27:25