为云 运行 部署公开端口 8080 和 3000

Expose Both Ports 8080 and 3000 For Cloud Run Deployment

TL:DR - 我正在尝试将我的 MERN 堆栈应用程序部署到 GCP 的云 运行。正在努力解决我认为是端口问题的问题。

我的 React 应用程序位于我的 Node.js 应用程序的 client 文件夹 中。

这是我的 Dockerfile 到 运行 前端和后端:

FROM node:13.12.0-alpine
WORKDIR /app
COPY . ./

# Installing components for be connector
RUN npm install --silent  
WORKDIR /app/client
RUN npm install --silent

WORKDIR /app
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT [ "/app/entrypoint.sh" ]

...这是我的 entrypoint.sh 文件:

#!/bin/sh
node /app/index.js &
cd /app/client
npm start

docker-compose up 在本地工作,docker run -p 8080:8080 -p 3000:3000 <image_id> 运行 是我构建的图像。端口 8080 用于 Node,端口 3000 用于 React 应用程序。但是,在 Cloud 运行 上,该应用程序无法运行。当我访问部署到云 运行 的应用程序时,前端最初会加载一瞬间,但随后应用程序在尝试向 API.

发出请求时崩溃

高级设置中,有一个默认为8080的容器端口。我试过将其更改为3000,但都不起作用。我无法输入 8080,3000,因为该字段只对端口采用有效整数。是否可以像这样将 React + Node 同时部署到 Cloud 运行?我怎样才能让 Cloud 运行 同时监听 8080 和 3000,而不是只监听 2 个中的一个?

谢谢!

目前不可能。

相反,您可以 run multiple processes inside Cloud Run, but instead use nginx to proxy requests between them depending on the URL, similar to what's recommended in