使用docker-compose将Docker镜像部署到Google Cloud Run

3
我将尝试从一个包含两个镜像的docker-compose文件中部署一个应用,其中一个是Angular应用程序(前端),另一个是非常小的nestjs应用程序(后端)。我将使用GCB、它们的触发器和一个cloudbuild.json进行部署。
以下是当前状态:
{
  "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镜像到仓库时,构建总是失败。我不确定镜像名称是什么,也不知道应该如何工作,因为有两个Docker镜像需要推送和部署。使用GCB是否可行,还是需要GKE集群来运行两个Docker镜像?

我应该分别构建这两个Docker镜像,将它们推送到仓库并部署到不同的GCR服务中吗?

谢谢。

1个回答

3
Docker compose并不构建任何东西,它只会根据yaml配置运行镜像。你的第二步是打标签,打什么标签?这就是为什么它失败的原因。
所以,请忘记docker compose吧。将后端部署在Cloud Run上,只需要容器。对于前端,有几种解决方案:
- 也将其部署在Cloud Run上(不是最佳解决方案) - 在App Engine上部署静态文件(需要创建app.yaml文件) - 将静态文件部署到Google Cloud Storage 然后,使用两个后端创建负载均衡器:
1.您网站的后端 2.您的nestjs后端。
然后,您就有了一个可用于生产的部署。(如果需要其他帮助,请让我知道)
编辑1:
使用负载均衡器,您可以定义要服务的资源的路径(URL map)。例如:
- /nest/* -> 重定向流量到您的nestjs后端 - /* -> 默认情况下,将流量重定向到您的存储桶后端。
静态和nestjs后端都可以通过相同的IP(和域名,在设置DNS注册商之后)访问。谷歌还可以自动为您提供SSL证书。
使用负载均衡器有两个优点:
- 前端和后端具有相同的基本URL,您不必在后端管理CORS。 - 前后端的流量以HTTP(不建议使用)或HTTPS提供,这可以防止浏览器中的混合内容错误。
注意:如果没有负载均衡器,则只能以HTTP模式提供静态资源,需要类似负载均衡器的额外层才支持HTTPS。
负载均衡器的“问题”是最低每月15美元的费用。

应用引擎似乎对我的使用情况来说有点太昂贵了。如果我要将其部署在Google Cloud Storage上,我该如何访问实际的应用程序呢?那么URL会是什么(假设)? - chrnx
或者说我该如何提供静态内容? - chrnx
App Engine标准版可免费提供静态内容服务(类似于Firebase托管)。但是,如果您在App Engine上部署后端容器,则需要使用App Engine Flex,而且价格相当昂贵。 - guillaume blaquiere
我更新了我的回答。不知道是否足够清晰? - guillaume blaquiere
是的,谢谢您澄清。我现在会尝试一下! - chrnx
我已经问了另一个相关的问题,如果您方便的话,请查看一下:https://stackoverflow.com/questions/66006531/google-cloud-app-engine-deploy-multiple-environments - chrnx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接