호랑이 개발일기

Azure App Service로 Spring Boot 배포하기 본문

Backend

Azure App Service로 Spring Boot 배포하기

박개발 2025. 2. 7. 00:13

다양한 클라우드 환경이 있지만, AWS보다 조금 더 직관적인 UI는 없을까 다른 클라우드는 어떤게 있나 찾아보던 중 

MS사에 Azure가 있길래 사용해보았더니 AWS보다 조금 더 직관적인 UI와 사용자가 사용하기 편하게 되어 있길래 사용해보았다. 사용해보니, 각각의 서비스 연동과 클라우드를 처음 사용하는 유저의 입장에서도 Azure도 휼륭한 대안이 될 수 있기도 하다.

 

Azure는 체험 계정으로 12개월간 무료 서비스와 크레딧을 제공하므로 처음 사용시에는 체험 계정을 생성하여 무료로 서비스를 이용해볼 수 있다.

 

 

 

Azure 무료 계정 또는 종량제 만들기 | Microsoft Azure

Azure 계정을 만들어 애플리케이션을 만들고, 배포하고, 관리하기 위한 확장성 있고 비용 효율적인 서비스를 시작합니다.

azure.microsoft.com

 

해당 블로그는 Spring Boot를 Github를 통하여, CICD 파이프라인을 만들고 배포하는 과정인것을 알려드립니다.
DBServer를 배포하시고싶으신 분은 Azure Database for MySQL 서버 에서 서비스 하시면 됩니다!

※ 1년뒤 청구가 날라올 수 있으니 1년이 지나면 모든 프로그램은 삭제하시길 바랍니다.

 

 

신용카드도 등록하고 회원가입을 완료하였다면 다음과 같은 화면 일텐데, UI는 바뀔 수 있으니 주의!

 

회원가입을 완료한 화면 (리소스는 신경쓰지마세요!)

 

여기서 이제 사용하고 싶은 서비스를 사용하면된다.

 

DB 호스팅을 받고싶으면 Database for MySQL 서버

Spring Boot와 같이 웹배포 서비스를 하고싶으면 App Services

 

등등..

 


 

차근차근 다음과 같이해보자

 

 

App Servies를 검색 후 만들기

 

 

 

해당 부분에서 꼭 무료티어를 선택하고 만들어 준다.

 

여기 까지 왔음 환경설정은 완료!

 


 

배포를 하기 전에 배포를 위한 자격 증명을 설정해야합니다!

 

 

az webapp deployment user set --user-name <username> --password <password>

 

 

 

배포 자격 증명 구성 - Azure App Service

Azure App Service에 있는 배포 자격 증명의 유형과 이를 구성하고 사용하는 방법에 대해 알아봅니다.

learn.microsoft.com

 


 

자격 설정이 완료되었다면 Github로서 파이프라인을 설정해보자.

 

 

 

 

여기서 부터는 이제 CICD를 설정하는 곳 이다.

저장소 / 브랜치 / organizations / repositories 등 설정해준 후 해당 github으로 돌아가주면 

 

.github/workflows/main_appservice-server.yml

 

이라는 파일이 생길텐데, 해당 파일은 배포를 도와주는 파이프라인을 설정하는 파일이다.

이 파일은 애플리케이션을 자동으로 빌드, 테스트, 배포할 수 있도록 설정하므로 잘 설정해야한다...

 

여기서 새벽까지 개고생했음 이 글을 보는 사람들은 절대 그런일은 없도록하며....

 

 

필자의 환경설정은 JAVA17 / SpringBoot / gradle 입니다.

만약 maven 이라면 maven에 맞게 각 버전에 맞게 끔 해주시면 됩니다! 

 

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read

    steps:
      - uses: actions/checkout@v4

      - name: Set up Java version
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'microsoft'

      - name: Grant execute permission to gradlew
        run: chmod +x gradlew

      - name: Build with Gradle
        run: ./gradlew build(# 🔹 build 실행명령어 설정) --no-daemon 

      - name: List build/libs contents (확인용)
        run: ls -alh build/libs(# 🔹 JAR 생성 확인) 

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v4
        with:
          name: java-app  (# 🔹 업로드 이름)
          path: (# 🔹 빌드완료된 .jar파일의 정확한 파일경로 지정)
          ex) build/libs/파일명.jar  

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    permissions:
      id-token: write
      contents: read

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v4
        with:
          name: java-app  # 🔹 업로드한 이름과 동일하게 설정

      - name: List downloaded artifacts (확인용)
        run: ls -alh  # 🔹 java-app 폴더가 생성되었는지 확인

      - name: Login to Azure
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.가리겠습니다.  }}
          tenant-id: ${{ secrets.가리겠습니다.  }}
          subscription-id: ${{ secrets.가리겠습니다.  }}

      - name: Deploy to Azure Web App
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v3
        with:
          app-name: 'appService-server'
          slot-name: 'Production'
          package: (# 🔹 빌드완료된 .jar파일의 정확한 파일명 지정)
          ex) 파일명.jar  
          env:
            PORT: 80

 

 

여기까지 이상 없이 잘 하셨다면 코드를 올려보시면 github에서 배포를 실행합니다. 

 

 

부끄러운 내 실패작들... ㅋㅋ

 

여튼, 기다리다가 보면 

 

 

이런식으로 로그에서 성공이 떠야 합니다.

 

그 후, 메인페이지로 돌아가 서버를 다시 시작 누르면 배포 성공! 

 

※ 만약 그래도 안뜨거나 오류가 나오면 로컬에서 확인해보시고 코드가 이상이없다라면 몇분더 기다려보시면 배포가 되어있을겁니다!! 저도 안되다가 몇분 더 기다리니까 되었습니다 그것도 모르고 구상 변경하고 에휴..

 

 

여기까지 긴 글 읽어주시느라 감사합니다!

 

25년도 새해복 많이 받으시길 福

Comments