如果应用源文件是存储在容器镜像服务ACR企业版中的Docker镜像,可使用此部署物类型发布应用。
对于个人版ACR或第三方镜像仓库,通过仅执行命令部署物进行部署。
工作原理
当发布目标为ESS伸缩组时,部署期间伸缩活动会被暂停,部署结束后(无论成功或失败)将自动恢复。
部署流程遵循先停后启原则,即每次部署都会先执行停止脚本,再执行启动脚本。
Docker镜像会在部署时自动拉取至ECS实例,启动脚本中无需包含拉取镜像的命令。
创建并发布部署物。
将应用源文件信息、启动脚本和停止脚本配置为部署物。
创建发布任务,选择发布模式,将部署物发布至目标应用分组。
发布任务的自动化部署流程。
获取部署物信息,包括Docker镜像的信息和应用的启动/停止脚本。
拉取Docker镜像:从镜像仓库拉取镜像至ECS实例。
执行停止脚本:执行应用停止脚本,停止旧版本应用。
执行启动脚本:执行应用启动脚本,启动新版本应用。
适用范围
仅支持部署到Linux实例。
启动和停止脚本仅支持Shell类型的脚本。
操作步骤
准备应用、分组和ECS实例。
在开始部署前,需要先在ECS应用管理中创建应用和分组,并将准备好的ECS实例加入到分组。
如果没有ECS实例,前往ECS控制台-自定义购买页面,创建Linux操作系统的ECS实例。
建议ECS镜像选择Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。后续示例中的脚本基于这两种镜像编写。如果使用其他镜像,请参考示例并根据实际情况修改脚本。
前往ECS控制台-应用管理页面,单击导入已有资源创建,创建应用和应用分组,并导入ECS实例到应用分组。
为分组内的ECS实例安装Docker。在应用分组的运维管理页签下,选择安装/卸载扩展程序来批量安装Docker。
如果ECS实例是基于自定义镜像创建的,无法通过此方式安装扩展程序。需要远程连接到实例并手动安装Docker。
创建Docker镜像部署物。
拉取示例镜像到本地,然后推送镜像到企业版ACR实例仓库。
docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest前往ECS控制台-应用管理页面,在我的应用页签下,单击目标应用名称。
在应用详情页,选择部署物页签,然后单击创建部署物。
在创建部署物页面,部署物类型选择Docker镜像,并配置以下关键参数。
ACR实例信息: 填写ACR企业版实例信息。填写镜像版本后,系统将自动生成镜像地址,该地址需在应用启动脚本中使用。

工作目录:应用启动/停止脚本的执行目录。示例:
/root/deploy。应用启动脚本:将
<镜像地址>替换为实际地址。### 发布时,Docker镜像会被自动拉取到ECS上,可直接进行容器启动操作。 ### 启动当前版本的容器 ### Start the current version of the container function start_application() { image_name="<镜像地址>" container_name="my-container" docker run -d -p 8080:8080 --name ${container_name} ${image_name} } start_applicationfunction stop_application() { # 通过容器名查询容器是否存在,如存在则删除容器 # Query whether the container exists by the container name, and delete the container if it exists container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application
所有参数配置完成后,单击确定保存部署物。
返回部署物列表,找到刚创建的部署物,单击发布。选择目标分组,单击确定开始部署。
结果验证。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
执行
curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。
重要字段
字段 | 说明 |
容器镜像服务地域 | 企业版ACR实例所在地域 |
容器镜像服务实例ID | 企业版ACR实例ID |
命名空间 | 镜像仓库所在命名空间 |
仓库名称 | 镜像仓库名称 |
镜像版本 | 待部署的Docker镜像的版本 |
是否通过内网拉取镜像 | 若选择通过内网拉取镜像,需确保 ACR 实例和 ECS 实例位于同一VPC内,并已配置专有网络的访问控制。 |
工作目录 | 应用的启动/停止脚本的工作目录。
|
应用启动脚本 | 用于启动应用的Shell脚本。 |
应用停止脚本 | 用于停止应用的Shell脚本。 例如,以下脚本可停止名为 |