このサンプルテンプレートは、GitHub からコードをプルして Docker イメージを作成し、Container Registry にアップロードして、複数の Elastic Compute Service (ECS) インスタンスにデプロイするために使用されます。これは、イメージを作成し、イメージをイメージリポジトリにアップロードし、複数の ECS インスタンスにイメージをデプロイする必要があるシナリオに適用できます。このテンプレートは、既存の ECS インスタンスで実行することも、一時的な ECS インスタンスを作成して実行することもできます。イメージが作成されてアップロードされると、一時的な ECS インスタンスは自動的に解放されます。さらに、このテンプレートを使用すると、ビジネス要件に基づいて、Container Registry Enterprise Edition または Container Registry Personal Edition にイメージをアップロードしたり、イメージをプルしたりできます。 Container Registry Enterprise Edition の使用には料金がかかります。 Container Registry Personal Edition は無料で使用できます。
前提条件
ECS インスタンスが作成され、ECS インスタンスがインターネットにアクセスできること。詳細については、「ECS インスタンスの作成」および「インターネットアクセスの有効化」をご参照ください。
Container Registry Personal Edition または Enterprise Edition がアクティブ化されていること。詳細については、「Container Registry とは」、「Personal Edition インスタンス、Cost-effective Edition インスタンス、および Enterprise Edition インスタンスの違い」、および「Container Registry Personal Edition インスタンスの作成」をご参照ください。
サンプルテンプレート
Object Storage Service (OSS) や GitHub など、コードソースを指定します。CloudOps Orchestration Service (OOS) は、コードソースからコードをプルするための一時的な URL を生成します。
OOS はコードを自動的にプルして Docker をインストールし、スクリプトを実行してイメージを作成します。イメージが作成されると、OOS はイメージを Container Registry の指定されたイメージリポジトリにアップロードします。
前の手順で作成したイメージをプルし、複数の ECS インスタンスに Docker コンテナーとして同時にデプロイします。
例
コードソースを準備する
この例では、Spring Boot プロジェクトのサンプルコードを使用します。コードは Gitee と GitHub にアップロードされています。コードを使用する場合は、コードを自分のリポジトリにフォークする必要があります。コードアドレス:
メッセージテンプレートを作成する
CloudOps Orchestration Service コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択し、[テンプレートの作成] をクリックします。
[ビルドとデプロイ] セクションで、[acs-ecs-exampledockerbuildanddeployfromgit] を選択し、[次のステップ] をクリックします。
[プロセス構成] タブで、パラメーターを設定し、[テンプレートの作成] をクリックします。
一時的な認証リンクを生成するためのコードソースを指定します。
この例では、Gitee をコードソースとして使用します。[所有者]、[組織]、[リポジトリ]、[ブランチ] の各パラメーターを設定します。
説明Alibaba Cloud が GitHub または Gitee リポジトリにアクセスする権限がない場合は、[必要な権限を付与する] をクリックします。
サンプルコードをフォークした場合、アカウントに属するすべてのリポジトリが [リポジトリ] ドロップダウンリストに自動的に表示されます。この場合、コードをフォークしたリポジトリを選択します。

Docker イメージを作成し、Container Registry にアップロードします。
コードソースと ECS インスタンスを指定し、必要に応じて構成スクリプトを指定します。

[コードリソース] を
gitに設定し、[コードリソース URL] にデフォルト値authorizedUrlを使用します。[ビルド ECS の選択]: ECS インスタンスを選択します。[既存の ECS] または [新しい ECS] を選択できます。
説明[新しい ECS] を選択すると、従量課金制で課金されます。OOS は、Docker が ECS インスタンスにインストールされているかどうかを自動的に確認します。Docker がインストールされていない場合、OOS は ECS インスタンスに Docker Community Edition を自動的にインストールします。
[ビルド構成]: 必要に応じてビルドコマンドを提供します。サンプルコードのすべてのビルドは Dockerfile で完了します。追加の準備は必要ありません。
Docker イメージを作成し、Container Registry にアップロードします。
OOS は
docker buildコマンドを自動的に実行してイメージを作成します。Dockerfileのパスと、docker buildコマンドが実行されるコンテキストパスを指定する必要があります。
[dockerfile パス]: リポジトリルートディレクトリに対する Dockerfile の相対パス。次の図に示すように、Dockerfile はプルされたコードのルートディレクトリに保存されています。したがって、Dockerfile の名前を直接指定できます。

[コンテキストパス]: コンテキストパスを
docker buildコマンドの実行コンテキストに設定します。コードルートディレクトリに対する相対パスを入力します。このパラメーターを指定しない場合、パスは Dockerfile ディレクトリと同じになります。[ACR タイプ]: Enterprise Edition (有料) または Personal Edition (無料) を選択します。
ACR タイプ
説明
参照
[personal Edition]
ユーザー名、パスワード、およびイメージのアップロード先のリポジトリの名前を指定する必要があります。
[enterprise Edition]
Container Registry インスタンス ID、名前空間、およびイメージのアップロード先のリポジトリの名前を指定する必要があります。
イメージバージョンを指定します。デフォルト値は、現在の日付と実行 ID で構成されています。プロジェクトのイメージバージョンを指定できます。イメージが VPC 経由でアップロードされるかどうかを確認します。詳細については、「VPC ACL の構成」をご参照ください。
Container Registry からイメージをプルしてデプロイします。
イメージをデプロイする ECS インスタンスを選択します。

[ターゲットインスタンス]: 一度に 1 つ以上の ECS インスタンスを選択できます。
[イメージリポジトリ]: 前の手順で Container Registry にアップロードされたイメージをプルするには、Container Registry のエディションを選択します。次のパラメーターは、前の出力から自動的に参照されます:
imageVersion、username、password、acrId、namespace、repoName。説明VPC を使用してイメージをプルする方法の詳細については、「VPC ACL の構成」をご参照ください。
Docker の実行オプションを指定します。
たとえば、
-p 8080:8080と入力すると、これらのオプションがdocker runコマンドに追加され、実行されます。
docker run -p 8080:8080 <image_name>説明--nameオプションは使用できません。OOS は、Container Registry リポジトリに対応するデフォルト名をコンテナーに割り当てるためです。OOS がdocker runコマンドを実行して現在のバージョンのイメージを使用する前に、毎回、同じ名前のイメージが実行されているかどうかを確認します。実行されている場合は、コンテナーを停止してから、docker runコマンドを実行して現在のイメージバージョンを使用します。このようにして、次回イメージの最新バージョンを Container Registry リポジトリにアップロードするときに、前のバージョンのイメージに対応するコンテナーを手動で停止することなく、テンプレートを直接再実行できます。オプション。同時実行制御パラメーターを設定して、複数の ECS インスタンスの同時実行率を制御します。
[テンプレートの作成] をクリックします。
テンプレートを実行する
CloudOps Orchestration Service コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
カスタムテンプレート ページで、テンプレートを見つけ、[アクション] 列の [実行の作成] をクリックします。
[基本情報] ステップで、パラメーターを設定し、[次のステップ: パラメーター設定] をクリックします。
[パラメーター設定] ステップで、パラメーターがない場合は [OK] をクリックします。
[作成] をクリックします。
タスク実行管理ページで、実行ステータスが [成功] の場合、実行は完了です。

ECS コンソール にログインします。
ECS インスタンスを見つけ、インスタンスに接続します。
詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
次のコマンドを実行して、デプロイが成功したかどうかを確認します。
curl http://localhost:8080/hello次のメッセージが返された場合、デプロイは成功です。

docker psコマンドを実行して、対応するコンテナーを表示することもできます。
次のステップ
コードが変更された場合は、新しいコードを Git リポジトリにアップロードし、CI/CD テンプレートを再実行するだけで済みます。テンプレートは現在のコンテナーを停止し、イメージを再生成して、Container Registry にプッシュします。次に、最新バージョンのイメージが、指定された ECS インスタンスにバッチでデプロイされます。必要に応じてテンプレートを変更し、テンプレートを再実行することもできます。