如何在 Google App Engine 上使用 jfrog 存储库中的 docker 图像?

How to use docker image from jfrog repository on Google App Engine?

如何在 Google App Engine 上部署来自 jfrog 存储库的 docker 图像?

我想要实现的是将存储在 jfrog arctifatory 上的 docker 图像部署到 Good App Engine。尽管我找到的所有示例都将图像推送到 Artifact Registry,但这是多余的,因为我只想将工件存储在 jfrog 上。以前有没有人试过。 这是我可以进一步使用 Cloud Build:

  - name: 'gcr.io/cloud-builders/docker'
    dir: /workspace/app
    args: [ 'pull', 'myjfrogurl.jfrog.io/$PROJECT_ID:$BRANCH_NAME' ]
  

那我后面用terraform部署:

resource "google_app_engine_flexible_app_version" "app_deploy" {

  version_id = "v1"
  service    = var.service_name
  runtime    = "nodejs"

   ... 

  deployment {

    container {
      # Here is the problem as it needs to be a google URI
      image = "myjfrogurl.jfrog.io/${var.project_id}:${var.branch_name}"
    }
  }

也许有办法做到这一点,不需要通过 Terraform 或云构建。

编辑 使用以下代码可以从 jfrog 中提取图像并推送到 Container Registry,App Engine 或 Cloud 运行 可以看到该图像,但正如答案所说,不可能将图像仅存储在一个中地点

  # Pull from external repository
  - name: 'gcr.io/cloud-builders/docker'
    args: [ 'pull', 'myjfrogurl.jfrog.io/$PROJECT_ID:$BRANCH_NAME' ]

  # Do a fast build using --cache-from
  - name: 'gcr.io/cloud-builders/docker'
    args: [ 'build',
            '-t', 'gcr.io/$PROJECT_ID/appName:$BRANCH_NAME',
            '--cache-from', 'gcr.io/$PROJECT_ID/appName:$BRANCH_NAME',
            '.' ]
            
  # Tag the image for Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['tag',
           'gcr.io/$PROJECT_ID/appName:$BRANCH_NAME']

  # Push to the Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push',  'gcr.io/$PROJECT_ID/appName:$BRANCH_NAME']

将 Guillaume Blaquiere 的赞成评论作为社区 Wiki 答案发布,以提高社区的知名度:

这对于 App Engine 是不可能的,并且与 Cloud 运行 有相同的限制。

编辑:要将图像部署到 App Engine,需要将图像推送到 Google Container Registry. Under the hood container registry is a GCP bucket called eu.artifacts.projectId.appspot.com or artifacts.projectId.appspot.com (according to the region - more)。 Artifacty Registry 是 Container Registry 下的一项服务,用于帮助管理镜像。