Alibaba Cloud DevOps Flow では、パイプラインのタスクでコンテナイメージをビルドし、Docker を使用してホストにデプロイできます。
Docker デプロイパイプラインの作成
Flow のホームページで [New Pipeline] をクリックし、[Java · Test, build image] テンプレートを選択します。
-
[Pipeline Source] ステージで [Add Pipeline Source] をクリックし、コードソースとして [Codeup] を選択します。サービス接続、コードリポジトリ (
springbootを選択)、およびデフォルトブランチ (masterを選択) を設定します。[ソースコードトリガー] を有効にし、[Add] をクリックします。 -
[Build Image] ステージで、[Build and push images to ACR (Personal Edition)] タスクをクリックします。承認済みの サービス接続と ACR のリージョンとリポジトリ を選択します。タグと [Dockerfile Path] を設定します。参考として Alibaba Cloud DevOps spring-boot sample Dockerfile を使用してください。
タグを
${DATETIME}に設定すると、タイムスタンプが自動で生成されます。[イメージキャッシュ] には [リモートキャッシュ] を選択します。
Docker デプロイタスクの設定
[New Stage] で [New Task] をクリックし、 を選択します。
タスク選択パネルで、左側の [Deployment] から [Docker Deployment] タスクを選択します。
-
[Docker Deployment] タスクで、既存の ホストグループ を選択するか、新しいホストグループを作成 します。[実行ユーザー] を
rootに設定し、[デプロイスクリプト] エディターにデプロイスクリプトを記述します (例:docker run $image)。ここで$imageは、アップストリームの出力変数またはカスタム変数を参照します。説明デプロイの前に、ホストに Docker をインストールしておく必要があります。
-
Docker デプロイスクリプトを設定します。
-
プライベートリポジトリからデプロイするには、
DOCKER_USERNAMEとDOCKER_PASSWORDをパイプライン変数として定義します。 に移動し、[New Variable] をクリックします。両方の変数で [シークレット] スイッチを有効にし、値をマスクします。
-
次のログインコマンドをデプロイスクリプトに追加します。レジストリアドレスは、ご使用のリポジトリの URL に置き換えてください。
echo ${DOCKER_PASSWORD} | docker login --username ${DOCKER_USERNAME} --password-stdin registry.cn-hangzhou.aliyuncs.com
-
-
変数を追加します。2 種類の変数が利用できます。
-
アップストリーム出力変数:アップストリームのタスクからビルドアーティファクト (Alibaba Cloud イメージまたはカスタムイメージ) を参照します。出力変数
imageを設定します。 -
カスタム変数:実行時にホスト上の環境変数として挿入されます。たとえば、コンテナ名として
appnameをflow-exampleに設定します。[Variables] セクションで、imageをtag.${DATETIME}に、appnameをflow-exampleに設定します。デプロイポリシーで、一時停止方法を [Pause for the first batch] に設定し、バッチ数を2に設定します。 -
Docker コンテナを実行するコマンドの例:
docker run -d --name ${appname} ${image}
-
-
不安定なリリースの影響を最小限に抑えるには、デプロイポリシーを設定します。
パイプラインの実行とデプロイ詳細の確認
パイプラインが完了したら、 に移動し、[Deployment Details] をクリックして、デプロイのバッチとログを確認します。詳細ページには、タスクステータスが [Completed] と表示され、ターゲットホスト 10.0.0.26 がオンラインで、インスタンス ID i-bp13r1mbmowyr79fbi1m とインスタンス名 with-flow-ecs が表示されます。[Actions] 列の [Logs] をクリックして、デプロイログを確認します。