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

Docker容器中Angular项目启动后出现Page not found问题求助

问题:Docker容器中Angular项目编译成功但访问404

我在Docker容器里基于Node 10.24运行特定版本Angular项目,执行命令:
docker run -it -p 9004:4200 --name hiero_particulierv6.2 angular-node-image-v6
容器启动后编译提示成功,但访问localhost:9004时出现“Page not found”错误。

初始Dockerfile内容:

FROM node:10.24 AS ui-build

WORKDIR /usr/src/app

COPY . /usr/src/app/
ADD run.sh ./run.sh

RUN npm install @angular/cli@7.3.9 && npm install
RUN chmod 777 ./run.sh

EXPOSE 9004

# using the script 'run.sh' to run the app
# this script run the app depending on his name
CMD ./run.sh particulier

容器运行正常,Node模块编译完成,但端口访问报错。后续我移除了Dockerfile中的EXPOSE 9004,因为启动脚本run.sh会根据传入的应用名称指定端口,传入particulier时端口为9004,脚本内容:

#!/bin/bash

# Exit on error
set -o errexit

curdir=$(pwd)

app=""
port=0
extra=""

if [ "$1" = "hiero" ]; then
  app="hiero"
  port="9000"
  # extra="--proxy-config ./dev_config/app.proxy.conf.js"
elif [ "$1" = "admin" ]; then
  app="admin"
  port="9001"
elif [ "$1" = "pdf" ]; then
  app="pdf"
  port="9002"
elif [ "$1" = "pro" ]; then
  app="pro"
  port="9003"
elif [ "$1" = "particulier" ]; then
  app="particulier"
  port="9004"
else
  echo "Unknown app: $1"
  echo "Try: ./run.sh hiero"
fi

if [ ! -z "$app" ]; then
  ./node_modules/@angular/cli/bin/ng serve --aot --project $app --port $port $extra
fi
解决方案

核心问题是端口映射不匹配+服务绑定范围限制:

  1. 端口映射错误:
    脚本中particulier项目在容器内实际监听的是9004端口,但你执行docker run时用的是-p 9004:4200,把主机9004端口映射到了容器的4200端口,而容器内4200端口没有服务监听,导致访问404。
    修正后的启动命令:

    docker run -it -p 9004:9004 --name hiero_particulierv6.2 angular-node-image-v6
    
  2. 服务绑定范围限制:
    ng serve默认只绑定容器内的localhost,外部主机无法访问该地址,需要在启动命令中添加--host 0.0.0.0参数,修改run.sh里的启动行:

    ./node_modules/@angular/cli/bin/ng serve --aot --project $app --port $port --host 0.0.0.0 $extra
    
  3. 关于EXPOSE指令:
    该指令仅用于声明容器要使用的端口,不影响实际端口映射功能,移除或保留均可。如果保留,建议和脚本中对应项目的端口保持一致(比如EXPOSE 9004),能让镜像的端口信息更清晰。

内容的提问来源于stack exchange,提问作者Jhessy ISMAËL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:50:32