如何使用 Docker 映像将 Node.js HTTP/2 应用程序部署到 Google Compute Engine 上?

Posted

技术标签:

【中文标题】如何使用 Docker 映像将 Node.js HTTP/2 应用程序部署到 Google Compute Engine 上?【英文标题】:How do I deploy a Node.js HTTP/2 application onto Google Compute Engine using a Docker image? 【发布时间】:2020-09-21 18:16:11 【问题描述】:

这一直有效,直到一周前,VM 由于 try-catch 中的 finally 丢失而耗尽内存。因此,我尝试将此修复程序重新部署到新实例,但现在没有任何效果。

这里是服务器的git仓库:https://gitlab.com/pumpkin-spice-latte/psl-server

我使用 GCP 控制台外壳来构建和推送映像。它位于容器可用且正在运行的 VM 上。但是,当我尝试连接到外部 IP 地址时,什么都没有。 https://35.203.160.44/

这是docker psdocker images的截图: docker-ps-docker-images

这是Firewall Rules的截图: firewall-rules

哈!!!!哈哈

【问题讨论】:

【参考方案1】:

我在本地克隆了repo,发现端口有错字:

const PORT =
  process.env.PORT || (process.env.NODE_ENV !== 'production' ? 8443 : 433); // should be 443

我认为您的意思是 443 而不是 433。

【讨论】:

谢谢!该端口是在该实例上发布的,但这就是为什么我发现所有这些超级混乱的原因。除非我需要做一些额外的事情才能“发布”它。我添加了另一个带有防火墙规则的图像。 @PumpkinSpice docker ps 输出中的 PORTS 列为空,表示端口未发布。你用来启动容器的docker run 命令是什么?你添加了-p 443:443 吗? 我只是使用 GCP 上的标准 UI 输入加载到容器中,它会自动为我运行容器。你知道我是否有办法将端口附加到它?再次,非常感谢!你是一个很大的帮助:) 啊,我只是 found out GCP 使用 --network="host" 运行容器,因此您不需要发布端口。所以这不是问题,嗯......查看提交日志,我找不到可能导致这种情况的先前部署之间的任何明显变化。除了--expose-http2 标志,也许没有它试试?否则我会拉你的 repo 并尝试自己运行它以了解更多信息。 我添加了它以尝试解决问题哈哈,但我会尝试删除它

以上是关于如何使用 Docker 映像将 Node.js HTTP/2 应用程序部署到 Google Compute Engine 上?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node js 将 Angular 应用程序作为 docker 镜像运行

谷歌云防火墙暴露端口 Docker

Docker:如何将 bash 与基于 Alpine 的 docker 映像一起使用?

如何将本地 Docker 映像部署到 Azure 应用服务?

Docker: 如何将node.js的项目部署到docker的swarm上面去

如何在基于 Node.js 镜像的 Docker 容器中使用 Let's Encrypt