我们对无服务器的 Cloud Run 的设计理念很简单:让开发人员能够在完全托管的自动缩放基础架构上运行源代码,并使用 HTTPS 保护的自定义域名。但对于容器来说,通常部署需要两个单独的步骤:
1. 将您的代码打包到容器镜像中
2. 将此容器镜像部署到 Cloud Run
尽管容器镜像已成为打包、部署和扩展软件的行业标准,但并非每个开发人员都学习容器的工作原理,或学习将他们的代码构建 (build) 到容器镜像中,这毕竟多少是有点学习门槛的。
现在,Google Cloud 提供了一个方便的单一命令来构建您的代码并将其部署到 Cloud Run:
gcloud beta run deploy --source=[DIRECTORY]
此命令结合了 Google Cloud Buildpacks 和 Cloud Build 的强大功能,Buildpacks 可让您从源代码自动构建容器镜像,而 Cloud Build 可在云上构建容器镜像,而无需在您的机器上安装 Docker 去打包容器。
支持两种构建模式;两者都是远程在云上执行的,并且都不需要在您的机器上安装 Docker:
1. 如果目录中存在 Dockerfile,则将使用 Dockerfile 构建上传的容器。
2. 如果目录中不存在 Dockerfile,则 buildpacks 会自动检测您正在使用的程序语言,自动获取代码的依赖项,并打包出容器镜像。
让我们看以下的示例 Python 应用程序。(如果您没有本地开发环境,可直接点击前往 shell.cloud.google.com 在浏览器中使用 shell,需要有 Google 账号登录,例如 Gmail 账号或其他注册的 Google 账号。)首先,获取源代码:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
cd buildpack-samples/sample-python
然后,使用单个命令构建 (build) 和部署 (deploy) 此应用程序(它没有 Dockerfile 哦):
$ gcloud beta run deploy my-app --source .
Building using Buildpacks and deploying container to Cloud Run service.
✓ Building and deploying... Done.
✓ Uploading sources...
✓ Building Container...
✓ Creating Revision...
✓ Routing traffic...
Done.
Service URL: https://sample-python-[...]-uc.a.run.app
这个单一的命令将您从源代码开始,直接到部署完成 Cloud Run 并提供生产服务的 URL。
它是如何工作的?
这个命令是“ gcloud builds submit”和“ gcloud run deploy --image=[...]”的合并的快捷方式,这里最主要是 gcloud builds 实现了无 Dockerfile 打包容器。
在这种情况下,Buildpacks 自动确定这是一个 Python 应用程序,然后它从requirements.txt文件中确定应用程序的依赖项。最后,它查看 Procfile 以确定如何启动此 Python 服务器。Procfile 里面只有一行声明,是为了说明 Python 程序的调用入口,而用其他语言,例如 Node.js、Java 等,则可以连 Procfile 也不需要。
作为此过程的一部分,buildpacks 自动为您的容器镜像选择一个安全的基础镜像。这样,您就不必担心管理基础镜像,因为它由 Google 主动维护;如果需要更新,下一次部署将自动选择最新的安全补丁。
通过运行此命令,gcloud 命令发送给 Cloud Build 在云上运行的按需构建打包工作。作为开发人员,您不需要在本地构建容器镜像的所有工具和依赖包,也不用考虑如何将代码转换为容器镜像。
事实上,如果您是一个经常运行“ docker build -t […]”然后“ docker push”的开发人员,您可以将本地 Docker 工作流替换为 Cloud Build 命令:
gcloud builds submit -t [...]
它将构建并将生成的镜像推送到 Artifact Registry 容器仓库,甚至无需在本地运行 Docker。
从源代码自动构建
开发经常从本地机器部署源代码,但不是长期的最佳实践——本地源可能包含未版本化的代码更改。最佳实践是在将代码更改 Push Git 代码库时自动触发部署。为此,我们之前发布了一个文章,说明轻松连接和配置持续部署 (CD) 到您的 Cloud Run 服务。通过将您的 GitHub 代码库或其他代码库连接到 Cloud Run,您可以配置自动构建和部署,也无需编写 Dockerfile 或打包文件。
要配置自动化构建 (build),在部署新的 Cloud Run 服务时,选择“Continuously deploy new revisions from a source repository”,连接您的存储库并认证,然后选择使用 Google Cloud Buildpacks 构建源的选项,如下图:
设置完成后,Push 到代码分支的更改将自动在 Cloud Build 上构建打包并安全地部署到 Cloud Run。可以直接在 Cloud Run 服务上看到,在 Google Cloud 控制台上监控这些 Build 构建的状态和历史记录。
如果有什么问题,可以通过 GitHub 对 Google Cloud Buildpacks 项目进行问题反馈。
文章信息
相关推荐
