アプリケーションのソースが Container Registry (ACR)(Personal Edition または Enterprise Edition)に保存されている Docker イメージの場合、このデプロイタイプを使用してアプリケーションを公開します。
サードパーティのイメージリポジトリからデプロイする場合は、コマンドのみのデプロイを使用してください。
仕組み
ESS スケーリンググループにデプロイする場合、デプロイ中はスケーリングアクティビティが一時停止されます。デプロイが成功しても失敗しても、デプロイ完了後にアクティビティは自動的に再開されます。
デプロイプロセスでは、まず古いバージョンを停止し、その後新しいバージョンを起動します。各デプロイでは、起動スクリプトを実行する前に停止スクリプトが実行されます。
Docker イメージはデプロイ中に Elastic Compute Service (ECS) インスタンスに自動的にプルされます。起動スクリプト内にイメージプルコマンドを含めないでください。
-
デプロイメントの作成と公開。
アプリケーションのソースファイル情報、起動スクリプト、および停止スクリプトを設定してデプロイメントを構成します。
リリースタスクを作成し、リリースモードを選択して、ターゲットアプリケーショングループにデプロイメントを公開します。
自動デプロイフロー。
デプロイメント情報を取得します。これには Docker イメージの詳細およびアプリケーションの起動スクリプトと停止スクリプトが含まれます。
イメージリポジトリから ECS インスタンスに Docker イメージをプルします。
停止スクリプトを実行して、アプリケーションの古いバージョンを停止します。
起動スクリプトを実行して、アプリケーションの新しいバージョンを起動します。
注意事項
-
デプロイメントは Linux インスタンスでのみサポートされています。
-
起動スクリプトおよび停止スクリプトはシェルスクリプトである必要があります。
操作手順
-
アプリケーション、グループ、および ECS インスタンスを準備します。
デプロイ前に、ECS Application Management でアプリケーションとグループを作成し、ご利用の ECS インスタンスをグループに追加します。
-
ECS インスタンスをお持ちでない場合は、ECS console - Custom Launch ページにアクセスして Linux ECS インスタンスを作成します。
以下のサンプルスクリプトはこれらのイメージ向けです。別のイメージを使用する場合は、スクリプトを適宜修正する必要があります。
-
ECS console - Application management ページにアクセスし、既存のリソースをインポートして作成 をクリックしてアプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。
グループ内の ECS インスタンスに Docker をインストールします。アプリケーショングループの O&M タブで、ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL を選択して Docker を一括インストールします。
カスタムイメージから ECS インスタンスを作成した場合、この方法で拡張機能をインストールすることはできません。リモート接続してDocker を手動でインストールする必要があります。
-
-
Docker イメージデプロイメントを作成します。
-
サンプルイメージをローカルマシンにプルし、その後イメージを ACR Enterprise Edition または ACR Personal Edition リポジトリにプッシュします。
docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest -
ECS console - Application management ページにアクセスします。マイアプリケーション タブで、ターゲットアプリケーションの名前をクリックします。
-
アプリケーション詳細ページで、デプロイメント タブを選択し、デプロイメントの作成 をクリックします。
-
デプロイメントの作成 ページで、デプロイタイプ を Docker イメージ に設定し、以下の 主要フィールド を構成します。
-
ACR インスタンス情報:ACR インスタンス情報を入力します。イメージバージョンを入力すると、システムが自動的にイメージアドレスを生成します。このアドレスをアプリケーション起動スクリプト内で使用します。
重要ACR Personal Edition を使用する場合は、アプリケーション詳細ページの詳細設定で ACR Personal Edition のユーザー名とパスワードを構成してください。
作業ディレクトリ:アプリケーション起動スクリプトおよび停止スクリプトの実行ディレクトリです。例:
/root/deploy。アプリケーション起動スクリプト:
<Registry Address>を実際のアドレスに置き換えてください。### Docker イメージはデプロイ中に ECS インスタンスに自動的にプルされます。コンテナを直接起動できます。 ### 現在のバージョンのコンテナを起動 start_application() { image_name="<Registry Address>" container_name="my-container" docker run -d -p 8080:8080 --name ${container_name} ${image_name} } start_applicationstop_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 をクリックしてデプロイメントを保存します。
-
-
デプロイメントリストに戻り、作成したデプロイメントを見つけ、公開 をクリックします。ターゲットグループを選択し、OK をクリックしてデプロイを開始します。
-
結果を確認します。
ターゲットインスタンスの詳細ページに移動します。接続 をクリックし、ワークベンチ を選択します。画面の指示に従ってターミナルにアクセスします。
-
curl http://localhost:8080/helloコマンドを実行します。Alibaba Spring Sample!という応答が返された場合、デプロイは成功しています。
主要フィールド
フィールド | 説明 |
Container Registry リージョン |
ACR インスタンスが配置されているリージョンです。 |
Container Registry インスタンス ID | ACR Enterprise Edition インスタンス ID |
名前空間 | イメージリポジトリが配置されている名前空間です。 |
リポジトリ名 | イメージリポジトリの名前です。 |
イメージバージョン | デプロイする Docker イメージのバージョンです。 |
プライベートネットワーク経由でイメージをプル |
このオプションを選択する場合、ACR インスタンスと ECS インスタンスが同一の Virtual Private Cloud (VPC) 内にあり、かつ VPC のアクセスの制御が構成済みであることを確認してください。 |
作業ディレクトリ | アプリケーションの起動スクリプトおよび停止スクリプトの作業ディレクトリです。
|
アプリケーション起動スクリプト | アプリケーションを起動するために使用するシェルスクリプトです。 |
アプリケーション停止スクリプト |
アプリケーションを停止するためのシェルスクリプトです。 たとえば、次のスクリプトは
|