はじめに
エキサイト株式会社 バックエンドエンジニアの山縣です。
既存サービスのリビルドも終盤、作成したアプリケーション(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
を利用することで、簡単に実装することができます。
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