すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:コマンドのみのデプロイメントパッケージ

最終更新日:Apr 01, 2026

このデプロイメントパッケージタイプは、アプリケーションのソースファイルを指定する必要がなく、スクリプトのみでアプリケーションを公開する場合に使用します。

仕組み

重要
  • Auto Scaling (ESS) グループであるアプリケーショングループにデプロイする場合、デプロイメント中はスケーリングアクティビティが一時停止します。デプロイメントが成功したか失敗したかにかかわらず、完了後に自動的に再開されます。

  • デプロイメントプロセスは、停止してから起動する原則に従います。各デプロイメントでは、まず停止スクリプトが実行され、次に起動スクリプトが実行されます。

  1. デプロイメントの作成と公開

    デプロイメント用にアプリケーションのソースファイル、起動スクリプト、および停止スクリプトを設定します。

    リリースタスクを作成し、リリースモードを選択し、ターゲットのアプリケーショングループにデプロイメントを公開します。

  2. タスク公開のための自動デプロイメントフロー

    1. アプリケーションの起動スクリプトと停止スクリプトを含む、デプロイメントパッケージの詳細を取得します。

    2. 停止スクリプトの実行:以前のバージョンのアプリケーションを停止します。

    3. 起動スクリプトの実行:新しいバージョンのアプリケーションを起動します。

適用範囲

  • デプロイメントは Linux インスタンスでのみサポートされています。

  • 起動スクリプトと停止スクリプトはシェルスクリプトである必要があります。

操作手順

Java アプリケーションの例

  1. アプリケーションを作成し、Elastic Compute Service (ECS) インスタンスをインポートします。

    1. ECS インスタンスをお持ちでない場合は、ECS コンソール - カスタム起動ページから Linux オペレーティングシステムを実行するインスタンスを作成します。

      Alibaba Cloud Linux 3.2104 LTS 64 ビットまたは Ubuntu 22.04 64 ビットの ECS イメージを使用することを推奨します。以下の例のスクリプトは、これら 2 つのイメージに基づいています。異なるイメージを使用する場合は、必要に応じてスクリプトを修正してください。
    2. ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックして、アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。

  2. デプロイメントパッケージを作成します。

    1. ECS コンソール - アプリケーション管理ページに移動します。[マイアプリケーション] タブで、対象のアプリケーション名をクリックします。

    2. アプリケーションの製品ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。

    3. [デプロイメントパッケージの作成] ページで、[デプロイメントパッケージタイプ][コマンドのみ] に設定します。パラメーターを設定します。[OK] をクリックして保存します。

      • 作業ディレクトリ:起動スクリプトと停止スクリプトが実行されるディレクトリを設定します。例:/root/deploy

      • アプリケーション起動スクリプト

        Alibaba Cloud Linux

        start_application() {
          set -e
          curl -O https://oos-public-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/code-deploy/sample-spring-1.0-SNAPSHOT.jar
          yum install -y maven-3.5.4
          java -jar ./sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application

        Ubuntu

        start_application() {
          set -e
          curl -O https://oos-public-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/code-deploy/sample-spring-1.0-SNAPSHOT.jar
          apt update
          apt install -y maven
          java -jar ./sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application
      • アプリケーション停止スクリプト

        ### アプリケーションを停止します (存在する場合)
        stop_application() {
          PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}')
          if [ -n "$PID" ]; then
            kill -9 $PID
          fi
        }
        
        stop_application
  3. デプロイメントリストに戻ります。作成したデプロイメントを見つけて [公開] をクリックします。ターゲットグループを選択し、[OK] をクリックしてデプロイメントを開始します。

  4. 結果を検証します。

    1. 対象インスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページのプロンプトに従ってターミナルにログインします。

    2. curl http://localhost:8080/hello コマンドを実行します。Alibaba Spring Sample! という戻り値は、デプロイメントが成功したことを示します。

Docker アプリケーションの例

  1. アプリケーション、グループ、および ECS インスタンスを準備します。

    デプロイする前に、ECS アプリケーション管理でアプリケーションとアプリケーショングループを作成します。次に、準備した ECS インスタンスをグループに追加します。

    1. ECS インスタンスをお持ちでない場合は、ECS コンソール - カスタム起動ページから Linux オペレーティングシステムを実行するインスタンスを作成します。

      Alibaba Cloud Linux 3.2104 LTS 64 ビットまたは Ubuntu 22.04 64 ビットの ECS イメージを使用することを推奨します。以下の例のスクリプトは、これら 2 つのイメージに基づいています。異なるイメージを使用する場合は、必要に応じてスクリプトを修正してください。
    2. ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックして、アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。

    3. グループ内の ECS インスタンスに Docker をインストールします。アプリケーショングループの [運用管理] タブで、[拡張機能のインストールまたはアンインストール] を選択して Docker をバッチでインストールします。

      ご利用の ECS インスタンスがカスタムイメージから作成された場合、この方法で拡張機能をインストールすることはできません。代わりに、インスタンスにリモートでログインし、Docker を手動でインストールしてください。
  2. デプロイメントパッケージを作成します。

    1. サンプルイメージをローカルにプルします。次に、イメージを個人用の ACR インスタンスリポジトリにプッシュします

      docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest
    2. ECS コンソール - アプリケーション管理ページに移動します。[マイアプリケーション] タブで、対象のアプリケーション名をクリックします。

    3. アプリケーション詳細ページの [パラメーター] タブを選択します。[パラメーターの作成] をクリックします。usernamepassword の 2 つのパラメーターを作成します。これらは、個人用の ACR のユーザー名とパスワードに対応します。セキュリティのため、password パラメーターは暗号化されたパラメーターとして作成します。

    4. アプリケーションの製品ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。

    5. [デプロイメントパッケージの作成] ページで、[デプロイメントパッケージタイプ][コマンドのみ] に設定します。パラメーターを設定します。[OK] をクリックして保存します。

      • 作業ディレクトリ:起動スクリプトと停止スクリプトが実行されるディレクトリを設定します。例:/root/deploy

      • アプリケーション起動スクリプト:ご利用の個人用 ACR の情報で <repo><image> を置き換えてください。

        下の図では、最初のフィールドが repo です。2 番目のフィールドは image です。起動スクリプトの対応する位置にあるこれらの値を置き換えてください。image
        ### 現在のバージョンのアプリケーションを起動します
        start_application() {
           repo="<repo>"
           image="<image>"
           container_name="my-container"
           docker login --username=${username} --password=${password} $repo
           docker pull $image
           docker run -d -p 8080:8080 --name $container_name $image
        }
        
        start_application
      • アプリケーション停止スクリプト

        ### コンテナーを停止します (存在する場合)
        
        stop_application() {
          # コンテナー名でコンテナーが存在するかどうかを照会し、存在する場合はコンテナーを削除します
          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
  3. デプロイメントリストに戻ります。作成したデプロイメントを見つけて [公開] をクリックします。ターゲットグループを選択し、[OK] をクリックしてデプロイメントを開始します。

  4. 結果を検証します。

    1. 対象インスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページのプロンプトに従ってターミナルにログインします。

    2. curl http://localhost:8080/hello コマンドを実行します。Alibaba Spring Sample! という戻り値は、デプロイメントが成功したことを示します。

主要なフィールド

フィールド

説明

作業ディレクトリ

アプリケーションの起動スクリプトと停止スクリプトの作業ディレクトリです。

  • 絶対パスを入力します。

  • 存在しないディレクトリを入力できます。実行時に自動的に作成されます。

アプリケーション起動スクリプト

アプリケーションを起動するためのシェルスクリプトです。

アプリケーション停止スクリプト

アプリケーションを停止するためのシェルスクリプトです。
スクリプトは、現在および以前のバージョンのアプリケーションを正しく停止する必要があります。アプリケーションが実行されていない場合でも、スクリプトはエラーなしで正常に終了する必要があります。

たとえば、次のスクリプトは my-container という名前のコンテナーを停止します。このスクリプトは、コンテナーのすべてのバージョンが同じ名前であることを前提としています。コンテナーが存在しない場合、スクリプトはエラーを報告しません:

container_name="my-container"
container_id=$(docker ps -aq -f name=${container_name}) 
if [ -n "$container_id" ]; then
  docker rm -f $container_id
fi