【发布时间】:2020-07-12 21:24:40
【问题描述】:
我可以成功:
- 将我的应用程序捆绑到 docker 映像中
- 在推送到主服务器时使用 Google Cloud Build 将此映像构建到容器中
- (此容器存储在注册表中,例如
gcr.io/my-project/my-container)
- (此容器存储在注册表中,例如
- 使用 Google Cloud Run 将此容器部署到网络
- 访问 Cloud Run 网址并查看我的网站
我现在正在尝试更复杂的构建,我认为下一步是使用 Google Compute Engine。
首先,我只是尝试部署我部署到 Cloud Run 的同一应用的单个实例:
- 导航到
Compute Engine > VM Instances - 输入实例名称等基本信息
- 在“容器映像”下输入我的容器位置:
gcr.io/my-project/my-container- (顺便说一句,我怀疑该界面未在此处为您现有的 Container Registry 项目提供选择器。)
- 选择“允许 HTTP 流量”和“允许 HTTPS 流量”
- 点击“创建”
GCE 需要一分钟的时间来创建它,然后它会显示绿色的复选标记和实例名称,以及“外部 IP:35.238.xxx.xxx”。我在浏览器中访问该 URL 并得到...“35.238.xxx.xxx 拒绝连接。”
为了检查,我返回 GCE 页面并选择我的实例旁边的“SSH > 在浏览器窗口中打开”,这会打开机器的一种云终端。
在此终端窗口中,键入 ps 并查看没有进程正在运行。容器Dockerfile 以CMD yarn start:prod 结尾,所以我猜这里不会发生这种情况。
此外,我 ls 在这里和那里导航,并从我的 Dockerfile 的 WORKDIR /app 命令中看到没有 /app 目录。似乎不仅我的应用程序没有启动,而且容器没有复制到 VM 实例?
我做错了什么?
【问题讨论】:
-
您检查过文档Deploying a container on a new VM instance 吗?我使用 Google 提供的 Nginx Docker 映像
gcr.io/cloud-marketplace/google/nginx1:latest创建了 VM,并允许 HTTP/HTTPS 连接。我成功连接到http://EXTERNAL_IP_OF_MY_VM,发现预期的Welcome to nginx!,同时https访问不起作用(可能是因为没有配置)。 -
要检查来自 VM 端的测试映像,我已通过 SSH 连接到它并运行命令
docker ps以检查已部署容器的状态。此外,我已经使用命令docker attach CONTAINER_ID_NAMES连接到容器,并且能够看到我对 NGINX Web 服务器的请求。之后我断开连接并使用命令docker exec -it CONTAINER_ID_NAMES /bin/bash连接到容器以与之交互。 -
1.尝试通过 http 2 访问您的应用程序。使用
docker ps检查容器的状态。 3. 使用docker attach CONTAINER_ID_NAMES和/或docker exec -it CONTAINER_ID_NAMES /bin/bash连接到您的容器并检查您的应用程序的状态。 4.Check logs。不要忘记检查Limitations -
演示也不适合我。部署后,公网IP的网站什么都没有返回。使用
gcloud打开虚拟机控制台时,输入时显示:“错误。启动代理遇到错误。您的容器未启动。要检查代理的日志,请使用“sudo journalctl -u konlet-startup”命令。 -
我也去了 Cloud Console 中的实例页面,点击了“stackdriver logging”。在那里,我在日志中看到了这个错误:“错误:无法启动容器:无效的参考格式”。这是用于演示的,我已按照说明进行操作。
标签: google-cloud-platform google-compute-engine