docker部署我的世界 docker我的世界服务器
全球含金量容器认证CKA培训北京站文末招生了
谷歌上周在其Cloud Next '19会议上推出了Cloud Run,这是一种基于Docker容器运行无服务器应用程序的新解决方案。可以说这是无服务器计算的重要一步——部署到Cloud Run要比在Kubernetes上运行容器容易得多,而且它也没有Lambda功能的架构限制。
什么是谷歌 Cloud Run?
谷歌Cloud Run是一个完全托管的平台,可以获取Docker容器镜像并将其作为无状态的自动扩展HTTP服务运行。
Cloud Run与第一代无服务器平台(例如AWS Lambda、Google Cloud功能或Azure功能)之间的区别在于:它允许你运行为多个端点提供服务的任意应用程序(而不是具有特定接口的小型功能)。
Cloud Run基于Knative,这意味着类似的解决方案可能会出现在其他托管的Kubernetes平台上。
我的项目是否能在Cloud Run上运行?
谷歌发布了一个Container运行时契约,其中列出了对容器的要求,包括:
——容器是为64位Linux编译的;
——容器侦听端口8080上的HTTP请求;
——最高可容纳2GB内存;
——容器实例必须在收到请求后的四分钟内启动HTTP服务器;
——你的应用程序应该工作(容器从0自动缩放到多个运行实例);
——所有计算都是无状态的,并且作用于请求。
只要你的项目符合上述一般要求,你就可以在Cloud Run上运行使用任何编程语言编写的任何应用程序。
请注意,Cloud Run目前处于测试阶段,因此这些要求可能会随时间而变化。
没有workflow(这是一件好事)
已经熟悉Docker或Heroku等传统PaaS解决方案的开发人员会感到十分亲切。
一旦你的应用程序打包在Docker中,只需:
将容器镜像推送到Google Container Registry;
运行gcloud beta run deploy。
几分钟后,Cloud Run将在域下配置一个新的应用程序,你可以自定义并公开。
示例:使用Semaphore进行持续部署
在下面的演示中,我们将使用Semaphore配置无服务器CI / CD管道,用于微服务,它将执行以下任务:
——运行自动化测试;
——构建一个Docker容器;
——将容器镜像推送到Google Container Registry;
——提供一键式手动部署到暂存Cloud Run环境;
——在主Git分支上成功构建之后,自动部署到生产Cloud Run环境。
你可以在GitHub上找到项目的完整源代码。
启用Cloud Run
谷歌官方快速入门指南提供了Cloud Run入门的路线图。
第一步是:
——在你的帐户中启用Cloud Run API;
——安装Google Cloud SDK;
——使用gcloud组件安装测试版安装测试版组件,或者如果你之前使用gcloud组件更新安装了测试版组件,进行更新。
Docker化应用程序
在该示例中,我们将使用与以下Dockerfile打包在一起的简单Sinatra Web应用程序:
在调整现有Dockerfile时,确保应用程序在端口8080上运行可能是需要进行的唯一更改。如果不这样做,你可能会看到如下错误:
使用Google Cloud和Container Registry(GCR)进行身份验证
为了在CI / CD管道中自动将Docker镜像推送到GCR,Semaphore需要使用Google Cloud进行身份验证。为安全起见,我们需要根据Google Cloud服务帐户的身份验证密钥创建Semaphore秘密。
获得身份验证密钥后,使用Semaphore CLI将其作为秘密上传到Semaphore。秘密应该定义一个文件,让我们称之为.secrets.gcp.json:
1 sem create secret google-cloud-stg --file ~/Downloads/account-name-27f3a5bcea2d.json:.secrets.gcp.json
定义交付管道
现在可以编写一个Semaphore管道来构建、标记并将Docker容器推送到GCR:
deploy-staging.yml和deploy-production.yml中定义的管道运行相同的步骤,区别在于服务的名称。
以下是生产部署的运行方式:
上线
本地终端或Semaphore作业中部署日志的最后一行将包含新应用程序所在的URL,例如:
https://semaphore-demo-cloud-run-ud2bmvsmda-uc.a.run.app.
第一次打开URL时,你将看到:
这是因为还有一个步骤要做,那就是在Cloud Run控制台中公开你的服务。 瞧:
最后
希望本文能够鼓励你使用运行良好的CI / CD管道为Cloud Run构建和运送内容。接下来就看你的了。