使用ECS的构建部署功能,可以直接从Git仓库自动拉取最新代码,并在单台ECS上完成应用的本地构建和自动化部署,为您提供了便捷、高效且低成本的解决方案,本文为您介绍如何快速将业务代码部署到单台ECS上。
本文适用于在单台ECS上构建部署应用的场景,并且该应用需要频繁更新和部署。如果您需要在多台ECS实例上部署应用,请参见构建部署示例模板。
前提条件
部署应用的ECS实例需满足以下条件:
ECS实例为Linux操作系统。
ECS实例需开通公网。具体操作,请参见开通公网。
ECS实例必须处于运行中状态。
ECS实例已安装云助手,并且云助手状态为正常。
代码源准备
本文使用了一个Spring Boot的项目代码来演示,代码已上传到Gitee和GitHub仓库(代码源),如果想要使用,请先fork到自己的仓库。代码地址:
Gitee:gitee示例代码(中国内地地域建议使用Gitee)
GitHub:github示例代码(海外地区建议使用Github)
操作步骤
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
找到目标ECS实例,单击实例ID进入实例详情页,选择
。在创建执行页面,填写代码源配置和构建部署配置,然后单击下一步。
代码源配置:选择所有者、组织、仓库以及分支信息,并填写下载路径。
重要如果您未授权阿里云从您的GitHub/Gitee读取您的代码仓库,请单击前往授权来完成授权操作。
如果您之前已经Fork示例代码,您只需下拉仓库,会自动展示您账号下所有仓库,请选择Fork的示例代码仓库。
下载路径是指将代码下载到您ECS上的路径,如果不填写默认为
/root/workspace/{当前执行的ID}
。如需指定路径,请确保您提供的路径下没有文件,否则会导致拉取代码源失败。
构建部署配置:
使用Docker构建部署:开启Docker构建功能后,系统会检测您的ECS上是否已安装Docker,如果ECS上未安装Docker,则系统会为您自动安装。您在构建部署脚本中可直接使用Docker相关命令。
重要仅以下操作系统支持使用Docker构建部署脚本:
Alibaba Cloud Linux 3/2
CentOS 7.7/7.8/7.9
Ubuntu 18.04/20.04/22.04/24.04
Debian 11/12
构建部署模式支持自动化模式和自定义脚本模式两种方式。选择自动化模式时,您仅需提供相关信息(Dockerfile路径、上下文路径或Docker运行选项),执行任务后会自动完成docker build构建镜像和docker run启动容器。您也可以选择自定义脚本模式,手动编写构建部署脚本,自定义Docker部署脚本示例如下所示:
# 构建当前版本的镜像 docker build -t myapp:latest . container_name="my-container" # 停止上一版本的容器(如有) container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker stop $container_id docker rm $container_id fi # 启动当前版本的容器 docker run -d -p 8080:8080 --name ${container_name} myapp:latest
未使用Docker构建部署:如果保持默认配置,即未开启Docker构建功能,则只需要输入构建部署脚本即可。本文仅提供一个示例,您可按需将该示例更换成适合您项目的脚本。
部署脚本示例(Alibaba Cloud Linux 3)
### Build jar file. set -e yum install -y maven-3.5.4 mvn package ### Stop the previous version of the application (if any) and deploy the current version. PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi java -jar target/sample-spring-1.0-SNAPSHOT.jar &
部署脚本示例(Ubuntu)
### Build jar file. set -e yum install -y maven mvn package ### Stop the previous version of the application (if any) and deploy the current version. PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi java -jar target/sample-spring-1.0-SNAPSHOT.jar &
部署脚本示例(CentOS)
### Build jar file. set -e apt install -y maven mvn package ### Stop the previous version of the application (if any) and deploy the current version. PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi java -jar target/sample-spring-1.0-SNAPSHOT.jar &
确认基本信息和任务信息,单击确定。
在构建部署页签下的执行列表中,查看执行任务的执行状态为已完成,说明部署已完成。该执行任务会从您指定的代码仓库拉取代码到ECS实例,并在您的代码根目录运行构建部署脚本。
验证业务代码是否在ECS上部署成功。
本文示例中,您可以在浏览器中输入
http://ECS实例公网IP:8080/hello
查看已部署的应用。页面返回如下信息,说明已部署成功。说明本文示例ECS需开通入方向8080端口,具体操作,请参见添加安全组规则。
(可选)如果您需要修改代码并重新推送到代码库后,您可以单击再次执行,部署脚本会检测并停止已部署应用,然后重新拉取部署最新的代码。