将业务代码部署到ECS

当您需要从Git拉取代码,并在单台ECS上完成本地的构建与部署,您可以使用ECS的构建部署功能,快速完成本地构建与部署。

适用场景

  • 适用于在单台ECS上构建部署。如果您需要在多台ECS实例上部署应用,请参见构建部署示例模板

  • 代码源为Gitee或GitHub平台的代码仓库。

前提条件

部署应用的ECS实例需满足以下条件:

  • ECS实例为Linux操作系统。

  • ECS实例需开通公网。具体操作,请参见为ECS实例开通公网

  • ECS实例必须处于运行中状态。

  • ECS实例已安装云助手,并且云助手状态为正常

示例代码

本文操作使用了一个Spring Boot的项目代码来演示,代码已上传到Gitee和GitHub仓库,如果想要使用,请先fork到自己的仓库。代码地址:

操作步骤

以下操作以Alibaba Cloud Linux 3.2104操作系统为例,不同环境可能会相关的构建部署命令不同,请按需调整。

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 找到目标ECS实例,单击实例ID进入实例详情页,选择定时与自动化任务 > 构建部署

    image

  5. 单击创建执行,填写代码源配置构建部署配置,然后单击下一步

    • 代码源配置:选择所有者组织仓库

      重要
      • 首次使用时,请单击前往授权,授权阿里云从您的Github/Gitee仓库拉取代码。

      • 如果使用示例代码,请先fork到自己的仓库,您可以在仓库下拉列表中找到对应代码库。

      • 下载路径默认为/root/workspece/{执行ID}。如需指定路径,请确保您提供的路径下没有文件,否则会拉取失败。

      image

    • 构建部署配置

      • 是否使用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

      • 构建部署脚本:您可以根据业务需要,编写部署脚本。

        重要
        • 以下示例脚本供您参考,您可以复制到构建部署脚本框内。

        • 以下示例脚本需您将示例代码中的代码fork到自己的仓库才能使用

        本地部署脚本示例

        ##### Sample Java Deploy Script 
        ##### for ECS on Alibaba Cloud Linux 3.2104
        
        # 构建当前版本jar包
        set -e
        yum install -y maven-3.5.4
        mvn package
        
        # 停止上一版本的应用(如有),并部署当前版本
        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 &
        
        ##### end

        image

        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	

        image

  6. 确认基本信息任务信息,单击确定

    该执行任务会从您指定的代码仓库拉取代码到ECS实例,并在您的代码根目录运行构建部署脚本。

    image

  7. 执行状态已完成,说明部署已完成。

    本文示例中,您可以在浏览器中输入http://ECS实例公网IP:8080/hello查看已部署的应用。页面返回如下信息,说明已部署成功。

    说明

    本文示例ECS需开通入方向8080端口,具体操作,请参见添加安全组规则

    image

  8. 当您修改代码并推送到代码库后,您可以单击再次执行,部署脚本会检测并停止已部署应用,然后重新拉取部署最新的代码。

    image

相关文档

更多部署应用模板,请参见构建部署示例模板