在文档中,他们说我们可以使用cloudbuild.yaml文件从云容器注册表构建和部署容器到云运行:
steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.']
# Push the container image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/PROJECT_ID/IMAGE']
# Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args: ['run', 'deploy', 'SERVICE-NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'REGION', '--platform', 'managed']
images:
- gcr.io/PROJECT_ID/IMAGE
我们还可以从cloudbuild.yaml文件中的dockerhub中提取图像,如下所示:
steps:
- name: "maven"
args: ["mvn", "--version"]
我想从docker hub中提取映像,并使用cloudbuil.yaml文件构建并部署此映像到云运行,但我不知道如何做到这一点,因为我是docker和云运行的新手。
我怀疑这个问题对于Stackoverflow来说有点过于宽泛。
您可能会从阅读文档和了解更多有关这些技术的信息中受益。
答案还取决于安全约束。
IIRC,Cloud Run需要从Google Container Registry(GCR(部署映像,因此关键步骤是将映像从DockerHub传输到GCR(docker pull
从DockerHub;docker tag
用于GCR;docker push
到GCR(。
如果DockerHub需要身份验证,您需要登录到DockerHub,然后才能从中docker pull
。
如果GCR需要身份验证(可能(,您需要登录GCR才能docker push
。通常,这是通过授予Cloud Build的帐户对支撑GCR的存储桶的写入权限来实现的。
所有这些都可以使用云构建步骤(请参阅:云构建器(
一旦图像在GCR中,您就可以使用gcloud
步骤来部署它
这些步骤可以使用Cloud Build(cloudbuild.yaml
(来实现,其形式如下:
steps:
- name: "docker"
args:
- "login"
- "--username=[[username]]"
- "--password=[[password-or-token]]"
- name: "docker"
args:
- "pull"
- "[[image]]:[[tag]]"
- name: "docker"
args:
- "tag"
- "[[image]]:[[tag]]"
- "gcr.io/${PROJECT_ID}/[[image]]:[[tag]]"
- name: "docker"
args:
- "push"
- "gcr.io/${PROJECT_ID}/[[image]]:[[tag]]"
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args:
- "run"
- "deploy"
- "[[service]]"
- "--image=gcr.io/${PROJECT_ID}/[[image]]:[[tag]]"
- "--region=[[REGION]]"
- "--platform=managed"
您应该花一些时间来实践docker。你可以拉一张图片,然后把它推到不同的地方,就像这样:
docker pull ubuntu
docker tag ubuntu gcr.io/.../ubuntu
docker push gcr.io/.../ubuntu
我不知道Maven是如何以及为什么会参与进来的。