Angular Universal部署Google Cloud Run遇端口错误及文件缺失问题
解决方案
1. 修正Dockerfile,补充项目构建流程
你的Dockerfile仅完成了文件复制,未执行Angular Universal的构建命令,导致Cloud Run构建镜像时无法生成dist目录,最终找不到指定的启动文件。修改后的Dockerfile需包含依赖安装、项目构建步骤:
FROM node:18-slim # 设置工作目录 WORKDIR /app # 复制package文件(优先复制可利用Docker缓存加速构建) COPY package*.json ./ # 安装项目依赖 RUN npm install # 复制全部项目源码 COPY . . # 构建Angular Universal项目,生成dist目录 RUN npm run build:ssr # 启动服务 CMD ["node", "dist/website3/server/main.js"]
2. 调整.dockerignore配置
当前配置排除了package*和src,导致构建镜像时无法复制依赖配置文件和项目源码,无法完成依赖安装与项目构建。需删除这两项规则:
node_modules server.ts npm-debug.log Dockerfile* tsconfig.* docker-compose* .angular karma.conf.js .dockerignore .git .gitignore README.md LICENSE .vscode
3. 确认package.json中的构建命令
确保package.json里存在正确的build:ssr命令,示例格式如下:
"scripts": { "build:ssr": "ng build && ng run website3:server" }
4. 适配Cloud Run端口要求
监听端口错误是因为Angular Universal默认使用4000端口,而Cloud Run要求服务监听环境变量PORT指定的端口。需在server.ts中修改端口监听逻辑:
const port = process.env.PORT || 4000;
内容的提问来源于stack exchange,提问作者fr4nkdev
相关产品推荐
相关产品推荐

