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

Docker构建的Angular+Spring Boot应用报NG0203错误(本地正常)

Docker构建Spring Boot+Angular应用触发NG0203错误

问题概述

我正在构建运行Spring Boot应用的Docker镜像,该应用托管的Angular应用被复制到static/目录。本地运行无问题,但运行Docker镜像生成的.jar文件时,Angular应用崩溃并触发NG0203错误。

错误栈信息

code: -203
message: "NG0203"
originalStack: 
Error: NG0203    
    at new It (http://localhost:8081/main.17bcaa919b5eb261.js:1:330791)
    at new Xn (http://localhost:8081/main.17bcaa919b5eb261.js:1:349170)
    at Ui (http://localhost:8081/main.17bcaa919b5eb261.js:1:349987)
    at vr (http://localhost:8081/main.17bcaa919b5eb261.js:1:350139)
    at e.ɵfac [as useFactory] (http://localhost:8081/main.17bcaa919b5eb261.js:1:388552)
    at Object.l [as factory] (http://localhost:8081/main.17bcaa919b5eb261.js:1:478649)
    at yd.hydrate (http://localhost:8081/main.17bcaa919b5eb261.js:1:477685)
    at yd.get (http://localhost:8081/main.17bcaa919b5eb261.js:1:476263)
    at Pt (http://localhost:8081/main.17bcaa919b5eb261.js:1:445529)
    at ut (http://localhost:8081/main.17bcaa919b5eb261.js:1:445630)
    at useValue (http://localhost:8081/main.17bcaa919b5eb261.js:1:474526)
    at yd.resolveInjectorInitializers (http://localhost:8081/main.17bcaa919b5eb261.js:1:477113)
    at new cu (http://localhost:8081/main.17bcaa919b5eb261.js:1:516602)
    at Kv.create (http://localhost:8081/main.17bcaa919b5eb261.js:1:516939)
    at http://localhost:8081/main.17bcaa919b5eb261.js:1:538752

排查情况

  • 对比本地与Docker构建生成的<filename>.<hash>.js文件,仅变量名和文件名哈希不同,核心逻辑一致,git diff显示无实质差异
  • 最终生成的.jar文件结构正常,main.17bcaa919b5eb261.js可正常加载(无HTTP 401/404错误)
  • 推测问题出在Angular的容器构建环节

本地构建流程

  1. 执行npm run build构建Angular应用
  2. 将dist/web-client目录内容复制到Spring Boot项目的resources/static目录
  3. 启动Spring Boot应用,访问http://localhost:8081可正常使用Angular应用

Docker构建四阶段

阶段1:构建OpenAPI客户端

# #####################################################################
# Stage: Build clients
#   - TypeScript (Angular)
# #####################################################################
FROM node:18.14.2-alpine as build-clients
WORKDIR /usr/src/app
RUN apk add openjdk17
# +++ BUILDING CLIENTS USING OpenAPI +++
RUN npm run build

阶段2:构建Angular应用

此阶段使用的npm版本为9.5.0,ng版本为15.0.5,已确认版本正常。

# #####################################################################
# Stage: Build web client
# #####################################################################
FROM node:18.14.2-alpine as build-frontend
ENV NG_CLI_ANALYTICS=ci
WORKDIR /usr/src/app

# Install & copy dependencies
COPY web-client/*.json .
COPY --from=build-clients /usr/src/app .generated/cardit-api
RUN npm install

# Copy source code
COPY web-client/src src

# Build
RUN npm run build

阶段3:构建最终Spring Boot JAR

# #####################################################################
# Stage: Compile final jar
# #####################################################################
FROM maven:3-openjdk-17 as build-backend
WORKDIR /usr/src/app

# Copy server code & maven pom
COPY java-backend/pom.xml .
COPY java-backend/src src

# Copy static website (web-client)
COPY --from=build-frontend /usr/src/app/dist/web-client src/main/resources/static

# Build
RUN --mount=type=cache,target=/root/.m2 mvn clean install

阶段4:启动应用

# #####################################################################
# Stage: Entrypoint
# #####################################################################
FROM openjdk:17-alpine as server
WORKDIR /usr/src/app

# {{ ENV variables }}

# Copying the final jar
COPY --from=build-backend /usr/src/app/target/*.jar .
ENTRYPOINT java -jar *.jar

构建输出对比

本地与Docker构建输出对比图显示,两者构建日志内容基本一致,无明显异常差异。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:43:16