SpringBootの環境でAzure Container Registryにプッシュする方法

はじめに

エキサイト株式会社 バックエンドエンジニアの山縣です。

既存サービスのリビルドも終盤、作成したアプリケーション(Java / SpringBoot)をデプロイするときがきました。 現在携わっているサービスでは、クラウドサービスにMicrosoft Azureを使用しており、作成したアプリケーションはAzure Container Appsでの運用を考えています。 また、コンテナイメージはAzure Container Registry(ACR)で管理していきます。

本記事では、デプロイ周りを整備しているときに得た知見の1つとして、SpringBootの環境でACRにプッシュする方法について紹介します。

環境

本記事では、jibを使用して、コンテナイメージのビルドとプッシュを行います。 必要に応じて、docker build, docker pushに置き換えて実行してください。 また、自動でデプロイを行うために、GitHub Actionsを使用しています。

  • SpringBoot: 2.6.2
  • jib: 3.1.2

認証情報の取り扱い

認証情報は、ホーム > コンテナー レジストリ > 設定 > アクセスキー から取得します。 そこで取得した認証情報を、リポジトリ > Settings > Secrets > Actionsに設定します。

ログイン処理

下記記事を参考に、Azureへのログイン処理を組み込みました。 azure/docker-login@v1を利用することで、簡単に実装することができます。

github.com

jibでビルド&プッシュ

jibを使用して、SpringBootで作成したアプリケーションをコンテナ化し、ACRにプッシュします。 コマンド1つで、ビルドとプッシュを行ってくれるので非常に便利です。 jibを使用しない場合は、docker build, docker pushと実行する必要があります。

サンプルのドキュメントこちらです。 github.com

全体のワークフロー

次に示すのが全体のワークフローです。 ワークフローを手動実行にするために、workflow_dispathを取り入れました。 詳細はこちらです。

name: Deploy api to dev

on:
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    env:
      DOCKER_REPOSITORY: sample.azurecr.io
      DOCKER_NAME: sample-dev

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set Up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Login to ACR
        uses: azure/docker-login@v1
        with:
          login-server: ${{ env.DOCKER_REPOSITORY }}
          username: ${{ secrets.AZURE_CONTAINER_REGISTRY_USERNAME }}
          password: ${{ secrets.AZURE_CONTAINER_REGISTRY_PASSWORD }}

      - name: Build & Push
        run: |
            ./gradlew api:jib \
                -Djib.container.args=--spring.profiles.active=dev \
                -Djib.to.image="${{ env.DOCKER_REPOSITORY }}/${{ env.DOCKER_NAME }}:${{ github.sha }}"

ワークフローを手動実行する

[ Run workflow ] をクリックすると、アプリケーションをコンテナし、ACRにプッシュするようになります。

GitHub Actionsのログを確認します。 ログに表示されているコンテナイメージのタグをACRでも確認します。

Built and pushed image as ***.azurecr.io/sample-devi:29b5e~~~~efe3e3

ACRにプッシュされていることを確認する

ホーム > コンテナー レジストリ > リポジトリ > リポジトリ名 からコンテナイメージを確認します。 コンテナイメージが無事プッシュされています!🎉

おわりに

SpringBootの環境でACRにプッシュする方法について紹介しました。 この方法により、ローカルからコマンドを実行してビルド&プッシュをする必要がなくなります。 この記事がお役に立てれば幸いです。

採用アナウンス

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しています。 また、長期インターンも歓迎しています。

カジュアル面談からもOKです。少しでもご興味がございましたら、お気軽にご連絡頂ければ幸いです。

▼ 募集職種一覧 ▼ www.wantedly.com