使用Dockerfile从Google Cloud Build部署到Google App Engine Flex环境

时间:2018-09-24 12:37:47

标签: docker google-app-engine google-cloud-build

我有一个Google App Engine Flex项目,其中包含以下文件:

  • app.yaml-定义App Engine Flex环境
  • Dockerfile-基于带有某些附加功能的Google App Engine容器
  • cloudbuild.yaml

cloudbuild.yaml 内容:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '--tag=gcr.io/$PROJECT_ID/<projectname>', '.']
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy']
timeout: '1600s'
images: ['gcr.io/$PROJECT_ID/<projectname>']

这是基于以下文档: https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts#deploying_artifacts

我在app deploy命令中遇到以下错误:

  

自定义运行时必须在源目录中完全具有[Dockerfile]和[cloudbuild.yaml]中的一个

在没有cloudbuild.yaml的情况下,它不知道尝试部署应用程序,在没有Dockerfile的情况下,它不知道其中包含什么,因此,我如何仅使用以下一项来指定相同的工作流程?这些?

2 个答案:

答案 0 :(得分:3)

我在使用自定义docker文件的Flex应用程序引擎上的Django项目上遇到了同样的问题。我将所有项目文件(可能的build.yaml除外)移到了一个子文件夹中,并在cloudbuild.yaml中将子文件夹指定为

steps:
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy", "<subfolder>/app.yaml"]
timeout: "1600s"

对我有用。

(另请参见does appengine cloudbuild.yaml requires a custom runtime?

答案 1 :(得分:0)

我的方法是相反的。将cloudbuild配置放在子文件夹中,然后使用--config="<folder>