Docker Compose执行up命令失败提示Service 'nginx' failed to build求助
问题排查及解决方案
核心问题定位
结合报错信息和你提供的Dockerfile内容,共有三处明显错误会导致构建失败:
- 前端Dockerfile缺失基础声明:你贴出的前端Dockerfile没有定义开头的基础镜像,也没有声明
builder构建阶段,但末尾用到了COPY --from=builder /usr/src/app/build ./build的多阶段构建语法,会直接触发构建逻辑错误。 - Nginx基础镜像拉取失败:报错提示找不到对应版本的nginx镜像manifest,
nginx:1.19.0-alpine是已停止维护的老旧版本,大部分镜像源已经下架了对应版本的镜像层。 - 如果你是用docker-compose统一编排三个服务,还要确认Nginx Dockerfile如果需要拷贝前端构建产物,不能直接跨Dockerfile使用
--from参数引用前端的构建阶段,必须先构建前端镜像再从对应镜像中拷贝文件。
修复步骤
- 首先补全前端Dockerfile的开头部分,示例如下:
# 新增基础镜像和builder阶段声明 FROM node:16-alpine as builder WORKDIR /usr/src/app # 以下接你原本的前端Dockerfile内容 COPY ./react_app/package.json . RUN apk add --no-cache --virtual .gyp \ python \ make \ g++ \ && npm install \ && apk del .gyp COPY ./react_app . ARG API_SERVER ENV REACT_APP_API_SERVER=${API_SERVER} RUN REACT_APP_API_SERVER=${API_SERVER} \ npm run build WORKDIR /usr/src/app RUN npm install -g serve COPY --from=builder /usr/src/app/build ./build
- 替换Nginx Dockerfile的基础镜像为仍在维护的稳定版本,将第一行修改为:
FROM nginx:1.24-alpine
- 清理本地Docker构建缓存,避免失效缓存影响构建:
docker builder prune -a
- 手动测试基础镜像拉取是否正常:
docker pull nginx:1.24-alpine
如果拉取失败,检查本地Docker的镜像源配置,替换为国内可用的镜像源即可。
- 若仍报错,可临时关闭BuildKit测试构建:
# 用docker-compose构建的情况 DOCKER_BUILDKIT=0 docker-compose build nginx
内容的提问来源于stack exchange,提问作者Andrew Bregman
相关产品推荐
相关产品推荐

