如何在Cloud Build中打标推送Quay托管的现有Docker镜像
Cloud Build 无Dockerfile镜像打标推送配置方案
整个流程不需要编写任何Dockerfile,直接使用Cloud Build官方预置的Docker构建器即可完成quay.io公共镜像的拉取、重打标签、推送到GCP自有镜像仓库的全流程,后续可直接用推送后的镜像部署Cloud Run。
前置准备
- 提前创建好GCP侧的镜像仓库:推荐使用Artifact Registry,创建对应区域的Docker格式仓库即可;如果沿用旧版Container Registry可跳过仓库创建步骤
- 确认你的目标镜像地址格式:
- Artifact Registry格式:
[区域]-docker.pkg.dev/[GCP项目ID]/[仓库名]/soketi:1.0-16-debian - Container Registry格式:
gcr.io/[GCP项目ID]/soketi:1.0-16-debian
- Artifact Registry格式:
- 给Cloud Build服务账号授予必要权限:镜像推送权限(Artifact Registry写权限/Container Registry存储写权限),如果需要构建后自动部署Cloud Run,额外授予Cloud Run管理员、服务账号用户权限
Cloud Build 配置文件
在本地新建cloudbuild.yaml文件,写入以下内容,替换替换变量里的默认值为你自己的实际参数即可:
steps: # 拉取quay.io托管的公共源镜像 - name: 'gcr.io/cloud-builders/docker' args: ['pull', 'quay.io/soketi/soketi:1.0-16-debian'] # 为拉取的镜像绑定自有仓库的新标签 - name: 'gcr.io/cloud-builders/docker' args: ['tag', 'quay.io/soketi/soketi:1.0-16-debian', '${_TARGET_IMAGE}'] # 将打好标签的镜像推送到自有镜像仓库 - name: 'gcr.io/cloud-builders/docker' args: ['push', '${_TARGET_IMAGE}'] # ---- 可选步骤:构建完成后自动部署到Cloud Run,不需要可删除整段 ---- - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' args: - 'run' - 'deploy' - 'soketi-service' - '--image=${_TARGET_IMAGE}' - '--region=${_DEPLOY_REGION}' - '--port=6001' - '--allow-unauthenticated' # 若需要公网访问就保留,内部服务可删掉 # 自定义替换变量,执行构建时可动态传参覆盖 substitutions: _TARGET_IMAGE: 'asia-east1-docker.pkg.dev/your-project-id/your-docker-repo/soketi:1.0-16-debian' _DEPLOY_REGION: 'asia-east1'
执行构建
配置文件准备完成后,不需要放任何Dockerfile,直接执行以下命令触发构建即可:
gcloud builds submit --config=cloudbuild.yaml .
也可以直接在Cloud Build控制台上传该yaml文件,通过控制台触发构建。
Cloud Run部署注意事项
如果没有配置自动部署,手动创建Cloud Run服务时注意:
- 容器端口不要用默认的8080,Soketi默认监听端口为
6001,需要在容器配置里修改对应端口 - 若需要使用Soketi的Websocket长连接能力,建议把Cloud Run的请求超时时间调长到最大3600秒,避免连接被主动中断
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

