このデプロイメントパッケージタイプは、アプリケーションのソースファイルを指定する必要がなく、スクリプトのみでアプリケーションを公開する場合に使用します。
仕組み
Auto Scaling (ESS) グループであるアプリケーショングループにデプロイする場合、デプロイメント中はスケーリングアクティビティが一時停止します。デプロイメントが成功したか失敗したかにかかわらず、完了後に自動的に再開されます。
デプロイメントプロセスは、停止してから起動する原則に従います。各デプロイメントでは、まず停止スクリプトが実行され、次に起動スクリプトが実行されます。
デプロイメントの作成と公開
デプロイメント用にアプリケーションのソースファイル、起動スクリプト、および停止スクリプトを設定します。
リリースタスクを作成し、リリースモードを選択し、ターゲットのアプリケーショングループにデプロイメントを公開します。
タスク公開のための自動デプロイメントフロー
-
アプリケーションの起動スクリプトと停止スクリプトを含む、デプロイメントパッケージの詳細を取得します。
-
停止スクリプトの実行:以前のバージョンのアプリケーションを停止します。
-
起動スクリプトの実行:新しいバージョンのアプリケーションを起動します。
-
適用範囲
デプロイメントは Linux インスタンスでのみサポートされています。
起動スクリプトと停止スクリプトはシェルスクリプトである必要があります。
操作手順
Java アプリケーションの例
アプリケーションを作成し、Elastic Compute Service (ECS) インスタンスをインポートします。
ECS インスタンスをお持ちでない場合は、ECS コンソール - カスタム起動ページから Linux オペレーティングシステムを実行するインスタンスを作成します。
Alibaba Cloud Linux 3.2104 LTS 64 ビットまたは Ubuntu 22.04 64 ビットの ECS イメージを使用することを推奨します。以下の例のスクリプトは、これら 2 つのイメージに基づいています。異なるイメージを使用する場合は、必要に応じてスクリプトを修正してください。
ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックして、アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。
-
デプロイメントパッケージを作成します。
ECS コンソール - アプリケーション管理ページに移動します。[マイアプリケーション] タブで、対象のアプリケーション名をクリックします。
アプリケーションの製品ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。
-
[デプロイメントパッケージの作成] ページで、[デプロイメントパッケージタイプ] を [コマンドのみ] に設定します。パラメーターを設定します。[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_applicationUbuntu
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
-
デプロイメントリストに戻ります。作成したデプロイメントを見つけて [公開] をクリックします。ターゲットグループを選択し、[OK] をクリックしてデプロイメントを開始します。
結果を検証します。
-
対象インスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページのプロンプトに従ってターミナルにログインします。
curl http://localhost:8080/helloコマンドを実行します。Alibaba Spring Sample!という戻り値は、デプロイメントが成功したことを示します。
-
Docker アプリケーションの例
アプリケーション、グループ、および ECS インスタンスを準備します。
デプロイする前に、ECS アプリケーション管理でアプリケーションとアプリケーショングループを作成します。次に、準備した ECS インスタンスをグループに追加します。
ECS インスタンスをお持ちでない場合は、ECS コンソール - カスタム起動ページから Linux オペレーティングシステムを実行するインスタンスを作成します。
Alibaba Cloud Linux 3.2104 LTS 64 ビットまたは Ubuntu 22.04 64 ビットの ECS イメージを使用することを推奨します。以下の例のスクリプトは、これら 2 つのイメージに基づいています。異なるイメージを使用する場合は、必要に応じてスクリプトを修正してください。
ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックして、アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。
グループ内の ECS インスタンスに Docker をインストールします。アプリケーショングループの [運用管理] タブで、[拡張機能のインストールまたはアンインストール] を選択して Docker をバッチでインストールします。
ご利用の ECS インスタンスがカスタムイメージから作成された場合、この方法で拡張機能をインストールすることはできません。代わりに、インスタンスにリモートでログインし、Docker を手動でインストールしてください。
-
デプロイメントパッケージを作成します。
-
サンプルイメージをローカルにプルします。次に、イメージを個人用の ACR インスタンスリポジトリにプッシュします。
docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest ECS コンソール - アプリケーション管理ページに移動します。[マイアプリケーション] タブで、対象のアプリケーション名をクリックします。
-
アプリケーション詳細ページの [パラメーター] タブを選択します。[パラメーターの作成] をクリックします。
usernameとpasswordの 2 つのパラメーターを作成します。これらは、個人用の ACR のユーザー名とパスワードに対応します。セキュリティのため、passwordパラメーターは暗号化されたパラメーターとして作成します。 アプリケーションの製品ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。
-
[デプロイメントパッケージの作成] ページで、[デプロイメントパッケージタイプ] を [コマンドのみ] に設定します。パラメーターを設定します。[OK] をクリックして保存します。
-
作業ディレクトリ:起動スクリプトと停止スクリプトが実行されるディレクトリを設定します。例:
/root/deploy。 -
アプリケーション起動スクリプト:ご利用の個人用 ACR の情報で
<repo>と<image>を置き換えてください。下の図では、最初のフィールドが
repoです。2 番目のフィールドは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
-
-
デプロイメントリストに戻ります。作成したデプロイメントを見つけて [公開] をクリックします。ターゲットグループを選択し、[OK] をクリックしてデプロイメントを開始します。
結果を検証します。
-
対象インスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページのプロンプトに従ってターミナルにログインします。
curl http://localhost:8080/helloコマンドを実行します。Alibaba Spring Sample!という戻り値は、デプロイメントが成功したことを示します。
-
主要なフィールド
|
フィールド |
説明 |
|
作業ディレクトリ |
アプリケーションの起動スクリプトと停止スクリプトの作業ディレクトリです。
|
|
アプリケーション起動スクリプト |
アプリケーションを起動するためのシェルスクリプトです。 |
|
アプリケーション停止スクリプト |
アプリケーションを停止するためのシェルスクリプトです。 たとえば、次のスクリプトは |