如何使用 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 ps
和docker 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。
【讨论】:
谢谢!该端口是在该实例上发布的,但这就是为什么我发现所有这些超级混乱的原因。除非我需要做一些额外的事情才能“发布”它。我添加了另一个带有防火墙规则的图像。 @PumpkinSpicedocker 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:如何将 bash 与基于 Alpine 的 docker 映像一起使用?
如何将本地 Docker 映像部署到 Azure 应用服务?