Container Registry (ACR) Personal Edition または Enterprise Edition に保存されている Docker イメージからアプリケーションをデプロイします。
サードパーティのイメージリポジトリからデプロイする場合は、コマンド専用デプロイメントを使用してください。
仕組み
-
ESS スケーリンググループにデプロイする場合、デプロイメント中はスケーリングアクティビティが一時停止されます。デプロイメントの成否にかかわらず、デプロイメントの完了後、アクティビティは自動的に再開されます。
-
デプロイメントプロセスでは、まず古いバージョンを停止してから、新しいバージョンを起動します。各デプロイメントでは、開始スクリプトを実行する前に停止スクリプトを実行します。
-
Docker イメージは、デプロイメント中に Elastic Compute Service (ECS) インスタンスに自動的にプルされます。開始スクリプトにイメージのプルコマンドを含めないでください。
-
デプロイの作成と公開
OSS 内のアプリケーションのソースファイルの場所と、起動スクリリプトおよび停止スクリプトを指定します。
リリースタスクを作成し、リリースモードを選択して、ターゲットのアプリケーション グループにデプロイを公開します。
-
自動デプロイメントフロー
-
デプロイメント情報を取得します。この情報には、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] ページに移動します。[My Applications] タブで、対象のアプリケーションの名前をクリックします。
-
アプリケーションの詳細ページで デプロイメント タブを選択し、デプロイメントの作成 をクリックします。
-
デプロイメントの作成 ページで、[デプロイタイプ] を 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_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]** をクリックしてデプロイメントを保存します。
-
-
デプロイリストに戻り、作成したデプロイを見つけて 公開 をクリックします。対象のグループを選択し、OK をクリックしてデプロイを開始します。
-
結果を確認します。
対象インスタンスの詳細ページに移動します。 [Connect] をクリックし、[Workbench] を選択します。 ページ上のプロンプトに従ってターミナルにログインします。
-
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 のアクセス制御を構成する必要があります。 |
|
作業ディレクトリ |
アプリケーションの開始スクリプトおよび停止スクリプトの作業ディレクトリ。
|
|
アプリケーション開始スクリプト |
アプリケーションを起動するシェルスクリプト。 |
|
アプリケーション停止スクリプト |
アプリケーションを停止するためのシェルスクリプトです。 スクリプトは、現在および以前のバージョンのアプリケーションを正しく停止できる必要があります。また、アプリケーションが実行されていない場合でも、エラーを発生させることなく正常に終了する必要があります。 たとえば、次のスクリプトは、
|