본문 바로가기
프로그래밍/JAVA

[SpringBoot]스프링부트 애플리케이션 배포 🚀😄

by 다다면체 2024. 12. 20.
728x90
반응형
반응형

애플리케이션을 개발한 후, 이제 그 애플리케이션을 세상에 배포하는 순간이 왔습니다! 😄 배포는 단순한 과정이 아니에요. Docker로 컨테이너화하고, 클라우드 플랫폼에 손쉽게 배포하며, CI/CD 파이프라인을 통해 자동화까지! 여러분의 애플리케이션을 어디서나 빠르고 안전하게 제공할 준비가 되었어요! 🌎


1. Docker와 컨테이너화 🐳

Docker는 애플리케이션을 "컨테이너"라는 독립적인 환경에서 실행할 수 있게 해줘요. 이렇게 하면 어디서든 동일한 환경에서 실행되므로 배포가 훨씬 쉬워지죠! 🎉

1.1 Dockerize 스프링부트 애플리케이션

Dockerfile 생성: 먼저, 애플리케이션의 루트 디렉토리에 Dockerfile을 작성합니다!

# OpenJDK 11 이미지 사용
FROM openjdk:11-jdk-slim

# 애플리케이션 jar 파일을 컨테이너 안에 복사
COPY target/myapp.jar /app/myapp.jar

# 컨테이너가 시작할 때 실행할 명령어
ENTRYPOINT ["java", "-jar", "/app/myapp.jar"]

 

Docker 이미지 빌드: Dockerfile을 바탕으로 이미지를 빌드해요!

docker build -t myapp .

 

Docker 컨테이너 실행: 이제 컨테이너를 실행시켜 봅시다!

docker run -p 8080:8080 myapp

컨테이너가 잘 실행된다면, 이제 애플리케이션이 어디서든 실행 가능한 상태로 준비된 거예요! 😎

1.2 Docker Compose로 여러 컨테이너 함께 배포하기

Docker Compose는 여러 개의 컨테이너를 한 번에 실행할 수 있게 해주는 도구입니다. 예를 들어, MySQL과 스프링부트를 함께 실행하고 싶다면, docker-compose.yml 파일을 작성하여 관리할 수 있어요!

version: '3'
services:
  app:
    image: myapp
    ports:
      - "8080:8080"
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb

docker-compose up 명령어를 통해 모든 컨테이너를 한 번에 실행해보세요! 🚀


2. 클라우드 배포 ☁️

이제 클라우드에 애플리케이션을 배포하는 방법을 알아봅시다. AWS Elastic BeanstalkHeroku와 같은 클라우드 플랫폼에 배포하면, 인프라 관리에 대한 부담을 줄이고, 더욱 손쉽게 확장할 수 있어요!

2.1 AWS Elastic Beanstalk 배포

AWS Elastic Beanstalk는 스프링부트 애플리케이션을 손쉽게 배포할 수 있는 관리형 서비스입니다. 여기서는 JAR 파일을 사용하여 배포하는 방법을 소개해요!

  1. Elastic Beanstalk CLI 설치: 먼저 AWS CLI를 설치하고 설정을 진행하세요.
  2. 애플리케이션 준비: pom.xml 또는 build.gradle에서 패키징 방식을 JAR로 설정!
  3. AWS 환경 생성 후 배포:
eb init -p java -d springboot-app
eb create my-springboot-env
eb deploy

단 몇 단계만에 AWS에 애플리케이션을 배포할 수 있어요! 🥳

2.2 Heroku 배포

Heroku는 클라우드 애플리케이션 배포를 아주 간편하게 할 수 있는 플랫폼이에요. Heroku에 배포하면 정말 빠르게 애플리케이션을 클라우드에서 실행할 수 있답니다!

 

Heroku CLI 설치: Heroku CLI를 설치한 후, 프로젝트에서 Procfile을 만들어주세요!

web: java -jar target/myapp.jar

 

배포: 이제 Heroku Git을 사용하여 애플리케이션을 바로 배포해보세요!

git push heroku master

Heroku가 배포해주면, 여러분의 애플리케이션은 이제 클라우드에서 구동됩니다! 😁


3. CI/CD 파이프라인 구축 🔄

애플리케이션을 배포할 때 CI/CD 파이프라인을 설정하면, 자동화된 빌드와 배포가 가능해져요! 코드가 변경될 때마다 자동으로 테스트, 빌드, 배포가 이루어져서, 개발 효율성을 극대화할 수 있습니다!

3.1 Jenkins로 CI/CD 파이프라인 구축

  1. Jenkins 설치: Jenkins를 설치하고 스프링부트 프로젝트에 대한 빌드 작업을 설정합니다.
  2. Jenkinsfile 작성: Jenkins 파이프라인을 정의하는 Jenkinsfile을 작성하여, 빌드, 테스트, 배포까지 자동화하세요!
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean install'
            }
        }
        stage('Deploy') {
            steps {
                sh 'docker-compose up -d'
            }
        }
    }
}

3.2 GitLab CI로 자동화된 빌드 및 배포

GitLab CI 설정: .gitlab-ci.yml 파일을 프로젝트 루트에 작성하여 자동 빌드를 설정합니다!

stages:
  - build
  - deploy

build:
  script:
    - mvn clean install

deploy:
  script:
    - docker-compose up -d

3.3 GitHub Actions으로 CI/CD 구축

GitHub Actions 설정: GitHub Actions를 통해 자동화된 빌드와 배포를 설정할 수 있습니다.

name: Java CI with Maven

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v2
        with:
          java-version: '11'
      - name: Build with Maven
        run: mvn clean install
      - name: Deploy to Docker
        run: docker-compose up -d

자동화가 이루어지면, 애플리케이션의 배포와 관리가 정말 쉬워집니다! 🎉


마무리 🎉

스프링부트 애플리케이션 배포Docker로 컨테이너화하고, 클라우드 플랫폼에 배포하며, CI/CD 파이프라인을 통해 자동화할 수 있습니다. 이렇게 하면 애플리케이션을 빠르고 효율적으로 배포하고 관리할 수 있어요!

이제 여러분의 애플리케이션도 글로벌으로 쉽게 배포하고, 유지 관리할 준비가 되었답니다! ✨

728x90
반응형