このデプロイメントタイプを使用して、Container Registry (ACR) の Enterprise Edition インスタンスに保存されている Docker イメージからアプリケーションを公開します。
ACR の Personal Edition またはサードパーティのイメージリポジトリからデプロイするには、コマンドのみのデプロイメントを使用します。
仕組み
ESS スケーリンググループにデプロイする場合、デプロイメント中はスケーリングアクティビティが一時停止します。デプロイメントの成否にかかわらず、完了後にアクティビティは自動的に再開されます。
デプロイプロセスでは、まず古いバージョンを停止し、次に新しいバージョンを起動します。各デプロイメントでは、起動スクリプトを実行する前に停止スクリプトが実行されます。
Docker イメージは、デプロイメント中に Elastic Compute Service (ECS) インスタンスに自動的にプルされます。起動スクリプトにイメージプルコマンドを含めないでください。
デプロイメントの作成と公開
デプロイメントのために、アプリケーションのソースファイル情報、起動スクリプト、および停止スクリプトを設定します。
リリースタスクを作成し、リリースモードを選択し、ターゲットのアプリケーショングループにデプロイメントを公開します。
自動デプロイメントフロー
デプロイメント情報を取得します。これには、Docker イメージの詳細とアプリケーションの起動および停止スクリプトが含まれます。
イメージリポジトリから ECS インスタンスに Docker イメージをプルします。
停止スクリプトを実行して、古いバージョンのアプリケーションを停止します。
起動スクリプトを実行して、新しいバージョンのアプリケーションを起動します。
適用範囲
デプロイメントは Linux インスタンスでのみサポートされています。
起動スクリプトと停止スクリプトはシェルスクリプトである必要があります。
操作手順
アプリケーション、グループ、ECS インスタンスを準備します。
デプロイする前に、ECS アプリケーション管理でアプリケーションとグループを作成します。次に、ご利用の ECS インスタンスをグループに追加します。
ECS インスタンスがない場合は、ECS コンソール - カスタム起動ページに移動して、Linux を実行する ECS インスタンスを作成します。
Alibaba Cloud Linux 3.2104 LTS 64 ビットまたは Ubuntu 22.04 64 ビットの ECS イメージを使用します。以下の例のスクリプトは、これら 2 つのイメージに基づいています。異なるイメージを使用する場合は、必要に応じてスクリプトを修正する必要があります。
ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックします。アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。
アプリケーショングループ内の ECS インスタンスに Docker をインストールします。これをバッチで行うには、[運用管理] タブに移動し、[拡張機能のインストール/アンインストール] を選択します。
ご利用の ECS インスタンスがカスタムイメージから作成された場合、この方法で拡張機能をインストールすることはできません。インスタンスにリモート接続し、手動で Docker をインストールする必要があります。
Docker イメージデプロイメントを作成します。
サンプルイメージをローカルマシンにプルします。次に、イメージを ACR Enterprise Edition インスタンスリポジトリにプッシュします。
docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latestECS コンソール - アプリケーション管理ページに移動します。[マイアプリケーション] タブで、ターゲットアプリケーションの名前をクリックします。
アプリケーション詳細ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。
[デプロイメントの作成] ページで、[デプロイメントタイプ] を [Docker イメージ] に設定し、次の 主要なパラメーター を設定します。
ACR インスタンス情報:ACR Enterprise 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 Enterprise Edition インスタンスが配置されているリージョン。 |
Container Registry インスタンス ID | ACR Enterprise Edition インスタンス ID |
名前空間 | イメージリポジトリが配置されている名前空間。 |
リポジトリ名 | イメージリポジトリの名前。 |
イメージバージョン | デプロイする Docker イメージのバージョン。 |
プライベートネットワーク経由でイメージをプル | プライベートネットワーク経由でイメージをプルすることを選択した場合、ACR インスタンスと ECS インスタンスが同じ Virtual Private Cloud (VPC) 内にあることを確認してください。また、VPC のアクセス制御を設定している必要があります。 |
作業ディレクトリ | アプリケーションの起動スクリプトと停止スクリプトの作業ディレクトリ。
|
アプリケーション起動スクリプト | アプリケーションを起動するために使用されるシェルスクリプト。 |
アプリケーション停止スクリプト | アプリケーションを停止するためのシェルスクリプト。 たとえば、次のスクリプトは |