すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:Docker イメージを作成し、Container Registry にアップロードして、ECS にデプロイする

最終更新日:Feb 09, 2025

このサンプルテンプレートは、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 は無料で使用できます。

前提条件

サンプルテンプレート

  1. Object Storage Service (OSS) や GitHub など、コードソースを指定します。CloudOps Orchestration Service (OOS) は、コードソースからコードをプルするための一時的な URL を生成します。

  2. OOS はコードを自動的にプルして Docker をインストールし、スクリプトを実行してイメージを作成します。イメージが作成されると、OOS はイメージを Container Registry の指定されたイメージリポジトリにアップロードします。

  1. 前の手順で作成したイメージをプルし、複数の ECS インスタンスに Docker コンテナーとして同時にデプロイします。

コードソースを準備する

この例では、Spring Boot プロジェクトのサンプルコードを使用します。コードは Gitee と GitHub にアップロードされています。コードを使用する場合は、コードを自分のリポジトリにフォークする必要があります。コードアドレス:

メッセージテンプレートを作成する

  1. CloudOps Orchestration Service コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[自動タスク] > [カスタムテンプレート] を選択し、[テンプレートの作成] をクリックします。

  3. [ビルドとデプロイ] セクションで、[acs-ecs-exampledockerbuildanddeployfromgit] を選択し、[次のステップ] をクリックします。

  4. [プロセス構成] タブで、パラメーターを設定し、[テンプレートの作成] をクリックします。

    1. 一時的な認証リンクを生成するためのコードソースを指定します。

      この例では、Gitee をコードソースとして使用します。[所有者][組織][リポジトリ][ブランチ] の各パラメーターを設定します。

      説明
      • Alibaba Cloud が GitHub または Gitee リポジトリにアクセスする権限がない場合は、[必要な権限を付与する] をクリックします。

      • サンプルコードをフォークした場合、アカウントに属するすべてのリポジトリが [リポジトリ] ドロップダウンリストに自動的に表示されます。この場合、コードをフォークしたリポジトリを選択します。

      2024-12-16_11-42-41.png

    2. Docker イメージを作成し、Container Registry にアップロードします。

      1. コードソースと ECS インスタンスを指定し、必要に応じて構成スクリプトを指定します。

        构建镜像docker.png

        • [コードリソース]git に設定し、[コードリソース URL] にデフォルト値 authorizedUrl を使用します。

        • [ビルド ECS の選択]: ECS インスタンスを選択します。[既存の ECS] または [新しい ECS] を選択できます。

          説明

          [新しい ECS] を選択すると、従量課金制で課金されます。OOS は、Docker が ECS インスタンスにインストールされているかどうかを自動的に確認します。Docker がインストールされていない場合、OOS は ECS インスタンスに Docker Community Edition を自動的にインストールします。

        • [ビルド構成]: 必要に応じてビルドコマンドを提供します。サンプルコードのすべてのビルドは Dockerfile で完了します。追加の準備は必要ありません。

      2. Docker イメージを作成し、Container Registry にアップロードします。

        OOS は docker build コマンドを自動的に実行してイメージを作成します。Dockerfile のパスと、docker build コマンドが実行されるコンテキストパスを指定する必要があります。

        ACR.png

        • [dockerfile パス]: リポジトリルートディレクトリに対する Dockerfile の相対パス。次の図に示すように、Dockerfile はプルされたコードのルートディレクトリに保存されています。したがって、Dockerfile の名前を直接指定できます。

          image

        • [コンテキストパス]: コンテキストパスを docker build コマンドの実行コンテキストに設定します。コードルートディレクトリに対する相対パスを入力します。このパラメーターを指定しない場合、パスは Dockerfile ディレクトリと同じになります。

        • [ACR タイプ]: Enterprise Edition (有料) または Personal Edition (無料) を選択します。

          ACR タイプ

          説明

          参照

          [personal Edition]

          ユーザー名、パスワード、およびイメージのアップロード先のリポジトリの名前を指定する必要があります。

          Container Registry Personal Edition インスタンスの作成

          [enterprise Edition]

          Container Registry インスタンス ID、名前空間、およびイメージのアップロード先のリポジトリの名前を指定する必要があります。

          Container Registry Enterprise Edition インスタンスの作成

          イメージバージョンを指定します。デフォルト値は、現在の日付と実行 ID で構成されています。プロジェクトのイメージバージョンを指定できます。イメージが VPC 経由でアップロードされるかどうかを確認します。詳細については、「VPC ACL の構成」をご参照ください。

    3. Container Registry からイメージをプルしてデプロイします。

      1. イメージをデプロイする ECS インスタンスを選択します。

        image

        • [ターゲットインスタンス]: 一度に 1 つ以上の ECS インスタンスを選択できます。

        • [イメージリポジトリ]: 前の手順で Container Registry にアップロードされたイメージをプルするには、Container Registry のエディションを選択します。次のパラメーターは、前の出力から自動的に参照されます: imageVersionusernamepasswordacrIdnamespacerepoName

          説明

          VPC を使用してイメージをプルする方法の詳細については、「VPC ACL の構成」をご参照ください。

      2. Docker の実行オプションを指定します。

        たとえば、-p 8080:8080 と入力すると、これらのオプションが docker run コマンドに追加され、実行されます。

        image

        docker run -p 8080:8080 <image_name>
        説明

        --name オプションは使用できません。OOS は、Container Registry リポジトリに対応するデフォルト名をコンテナーに割り当てるためです。OOS が docker run コマンドを実行して現在のバージョンのイメージを使用する前に、毎回、同じ名前のイメージが実行されているかどうかを確認します。実行されている場合は、コンテナーを停止してから、docker run コマンドを実行して現在のイメージバージョンを使用します。このようにして、次回イメージの最新バージョンを Container Registry リポジトリにアップロードするときに、前のバージョンのイメージに対応するコンテナーを手動で停止することなく、テンプレートを直接再実行できます。

      3. オプション。同時実行制御パラメーターを設定して、複数の ECS インスタンスの同時実行率を制御します。

    4. [テンプレートの作成] をクリックします。

テンプレートを実行する

  1. CloudOps Orchestration Service コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[自動タスク] > [カスタムテンプレート] を選択します。

  3. カスタムテンプレート ページで、テンプレートを見つけ、[アクション] 列の [実行の作成] をクリックします。

  4. [基本情報] ステップで、パラメーターを設定し、[次のステップ: パラメーター設定] をクリックします。

  5. [パラメーター設定] ステップで、パラメーターがない場合は [OK] をクリックします。

  6. [作成] をクリックします。

    タスク実行管理ページで、実行ステータスが [成功] の場合、実行は完了です。

    执行模板结果-zh.png

  7. ECS コンソール にログインします。

  8. ECS インスタンスを見つけ、インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  9. 次のコマンドを実行して、デプロイが成功したかどうかを確認します。

    curl http://localhost:8080/hello

    次のメッセージが返された場合、デプロイは成功です。image

    docker ps コマンドを実行して、対応するコンテナーを表示することもできます。image

次のステップ

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