docker - 为 Cloud Run 部署公开端口 8080 和 3000

标签 docker google-cloud-platform containers google-cloud-run

电话:DR - 我正在尝试将我的 MERN 堆栈应用程序部署到 GCP 的 Cloud Run。与我认为的端口问题作斗争。

我的 React 应用程序在 client 中文件夹 在我的 Node.js 内部 应用。

这是我的 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 Run 上,该应用程序不起作用。当我访问部署到 Cloud Run 的应用程序时,前端最初加载一瞬间,但随后应用程序在尝试向 API 发出请求时崩溃。

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

谢谢!

最佳答案

目前是不可能的。

相反,您可以 run multiple processes inside Cloud Run ,而是使用 nginx 根据 URL 在它们之间代理请求,类似于 this answer 中推荐的内容.

关于docker - 为 Cloud Run 部署公开端口 8080 和 3000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61355416/

相关文章:

jenkins - Jenkins Docker容器在启动时未将预安装的插件复制到JENKINS_HOME

google-cloud-platform - 是否可以将 Google Cloud NAT 用于 TCP/代理 LB 后面的虚拟机,以便所有服务器都可以利用来自单个 IP 的导出?

ios - 一个 View 目标的不同 View Controller C

mysql - 将mysql数据导入kubernetes pod

html - 4个div,需要居中2个中心div

Docker如何添加文件而不将其提交到图像?

docker - 如何在Docker Cloud上设置RabbitMQ集群?

docker - Docker 容器卷在没有运行的情况下如何工作?

tomcat - Bitnami Tomcat 堆栈 GCE

google-app-engine - 在使用 Google Cloud SDK 部署 gcloud 应用程序期间权限被拒绝