繁体   English   中英

将 Docker 映像部署到使用 docker-compose 运行的谷歌云

[英]Deploy Docker images to google cloud run with docker-compose

我正在尝试从 docker-compose 文件中部署一个应用程序,其中包含两个图像:一个 Angular 应用程序(前端)和一个非常小的 Nestjs 应用程序(后端)。 我正在使用 GCB、他们的触发器和 cloudbuild.json。

这是它当前的 state:

{
  "steps": [
    {
      "name": "gcr.io/$PROJECT_ID/docker-compose",
      "args": ["-f", "./docker-compose.${_ENVIRONMENT}.yml", "up", "-d"]
    },
    {
      "name": "gcr.io/cloud-builders/docker",
      "args": ["tag", "configurator:latest", "gcr.io/$PROJECT_ID/${_IMAGE_ID}"]
    },
    {
      "name": "gcr.io/cloud-builders/gcloud",
      "args": [
        "run", "deploy",
        "--allow-unauthenticated",
        "${_IMAGE_ID}",
        "--image", "gcr.io/$PROJECT_ID/${_IMAGE_ID}",
        "--region", "europe-west4",
        "--platform", "managed"
      ]
    }
  ],
  "images": [
    "gcr.io/$PROJECT_ID/${_IMAGE_ID}"
  ],
  "timeout": "1200s"
}

在尝试将 docker 映像推送到注册表时,构建总是在第 2 步失败。 我不确定图像名称可能是什么,或者它应该如何工作,因为需要推送和部署两个 docker 图像。 甚至可以使用 GCB 还是我需要一个 GKE 集群来运行两个 docker 图像?

我是否应该分别构建两个 Docker 映像,将它们分别推送到注册表并将它们部署到单独的 GCR 服务?

提前致谢。

Docker 什么都不构建,它只运行符合 yaml 配置的图像。 你的第2步,那个标签什么的,标签什么? 这就是它失败的原因。

所以,忘记 docker 组合。 在 Cloud Run 上部署您的后端,仅在容器上。 对于您的前端,您有几个解决方案:

  • 也将其部署在 Cloud Run 上(不是最佳解决方案)
  • 在 App Engine 上部署 static 文件(需要创建一个 app.yaml 文件)
  • 在 Google Cloud Storage 上部署 static 文件。

然后,创建一个具有 2 个后端的负载均衡器:

  1. 您的 web 站点后端
  2. 你的nestjs后端。

然后,您有一个生产就绪部署。 (如果您在某些方面需要更多帮助,请告诉我)


编辑 1

使用负载均衡器,您可以定义为您的资源提供服务的路径(URL 映射)。 为实例:

  • /nest/* -> 将流量重定向到你的nestjs后端
  • /* -> 默认情况下,将流量重定向到您的存储桶后端。

Both, static and nestjs backend, are accessible through the same IP (and domain name, after the set up of your DNS registrar. Google can also automatically provision the SSL certificate for you).

使用负载均衡器有 2 个优点:

  • 正面和背面具有相同的基础 URL,您不必在后端管理 CORS。
  • 前后流量均在 HTTP(不推荐)或 HTTPS 中提供服务,以防止浏览器中混合内容的错误。

注意:如果没有负载均衡器,您只能在 HTTP 模式下为 static 源提供服务,如果没有负载均衡器等附加层,则不支持 HTTPS。

负载均衡器的“问题”是每月 15 美元的最低成本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM