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

Docker构建失败与测试连接拒绝问题求助

Docker相关问题解决方案

问题1:执行docker build -t customer --target prod .拉取base镜像失败

错误信息

  • 使用BuildKit时:failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: rpc error: code = Unknown desc = pull access denied...
  • 不使用BuildKit时:pull access denied for base, repository does not exist or may require 'docker login'...

原因分析

你的Dockerfile中,后续test和prod阶段尝试引用名为base的镜像,但第一个基础镜像未被命名为base,Docker会将base当作公共仓库镜像去拉取,自然无法找到,导致报错。

解决步骤

修改Dockerfile,给第一个基础镜像添加别名base,确保后续阶段能正确引用:

# syntax=docker/dockerfile:1

# 给基础镜像命名为base,供后续阶段引用
FROM node:lts-alpine AS base
WORKDIR /server
COPY package.json package-lock.json ./

# 测试阶段基于base镜像构建
FROM base AS test
RUN npm ci --silent
COPY . .
EXPOSE 8080
CMD [ "npm", "run", "test" ]

# 生产阶段基于base镜像构建
FROM base AS prod
RUN npm ci --production --silent
COPY . .
EXPOSE 8080
CMD [ "node", "start" ]

修改后重新执行构建命令即可。


问题2:执行docker-compose -f docker-compose.dev.yml run customer_api npm run test出现Error: connect ECONNREFUSED 127.0.0.1:8080

原因分析

  1. docker-compose run会创建新容器并执行指定的npm run test命令,覆盖了配置中的command: npm start,导致API服务并未启动,测试代码连接127.0.0.1:8080时无服务响应。
  2. 即使服务启动,Docker容器内的127.0.0.1指向容器自身,若测试代码需连接其他服务容器,也无法通过localhost访问。

解决方法

方法1:先启动服务再执行测试

先启动API服务容器:

docker-compose -f docker-compose.dev.yml up -d customer_api

再进入运行中的容器执行测试:

docker-compose -f docker-compose.dev.yml exec customer_api npm run test

方法2:修改测试代码的连接地址

如果测试代码需调用本服务API,确保测试逻辑先启动服务;如果是连接其他服务,将测试代码中的127.0.0.1:8080替换为docker-compose中对应的服务名称(例如customer_api:8080)——在Docker Compose默认网络中,服务名称可直接解析为容器IP。

方法3:新增测试服务依赖API服务

调整docker-compose.dev.yml,添加专门的测试服务并依赖API服务启动:

version: "3.8"

services:
  customer_api:
    build:
      context: .
    ports:
      - 8080:8080
    volumes:
      - ./:/server
    command: npm start

  customer_test:
    build:
      context: .
    volumes:
      - ./:/server
    command: npm run test
    depends_on:
      - customer_api

执行测试命令:

docker-compose -f docker-compose.dev.yml run customer_test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:05:26