Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • spring
  • java
  • 안드로이드
  • 코틀린 인 액션
  • rsocket
  • 다이나믹 프로그래밍
  • Docker
  • 내림차순
  • 파이썬
  • enum
  • kibana
  • elasticsearch
  • Android
  • 에라토스테네스의 체
  • 백준
  • SQL
  • ec2
  • 우아한테크코스
  • 프리코스
  • webflux
  • grafana
  • Wil
  • 레포지토리
  • til
  • kotlin
  • MariaDB
  • 프로그래머스
  • 문자열
  • 코딩테스트
  • 코틀린

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

DevOps

[Docker] AWS EC2 + Docker를 사용한 Spring Boot 프로젝트 배포

2023. 9. 14. 03:45

0. 환경

  • Spring Boot 3.xx
  • Java 17
  • JDK corretto17

 

1. 스프링 부트 프로젝트

1) TestController 생성

 

참고: build.gradle 의존성은 다음과 같다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.boot:spring-boot-devtools'
}

 

2. Docker 파일

1) Docker 파일 생성

루트 프로젝트 하위에 Docker 파일을 생성한다.

2) Docker File 작성

FROM amazoncorretto:17

ARG JAR_FILE_PATH=./build/libs/*.jar

COPY $JAR_FILE_PATH app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]

 

• FROM amazoncorretto:17

    - Amazon Corretto 17 환경 


• ARG JAR_FILE_PATH=./build/libs/*.jar

    - ARG 명령어를 사용하여 JAR_FILE_PATH 라는 변수를 선언하고 값 설정


• COPY $JAR_FILE_PATH app.jar

    - COPY 명령어를 사용하여 지정한 경로의 JAR 파일을 app.jar라는 이름으로 복사

 

• EXPOSE 8080

    - 8080 포트를 열 것임을 명시


• ENTRYPOINT ["java", "-jar", "app.jar"]

    - ENTRYPOINT 명령어를 사용하여 컨테이너가 시작될 때 실행할 명령어 지정

    - 컨테이너가 시작될 때 복사된 app.jar 파일이 자동으로 실행

 

3) gradle 빌드

프로젝트 내의 Git Bash 터미널을 열어서 다음 명령을 입력한다.

./gradlew build

 

빌드가 완료되면 루트 폴더 하위의 build/libs 경로에 .jar 파일이 생성된 것을 확인할 수 있다.

 

3. Docker 허브(링크)

1) Docker 설치 및 실행

2) 허브에 이미지 업로드

프로젝트의 Git Bash 터미널에 다음 명령어를 순서대로 입력한다.

//이미지 빌드
docker build -t 도커ID/허브Repo이름

//도커 로그인
docker login

//이미지 업로드
docker push 도커ID/허브Repo이름

 

모두 완료되면 이미지가 업로드 된 것을 확인 할 수 있다.

 

 

4. AWS EC2 배포

1) EC2에 도커 설치

//업데이트
sudo yum update -y

//도커 설치
sudo yum install docker -y

//버전 확인
docker -v

//도커 실행
sudo service docker start

//도커 그룹에 사용자 추가
sudo usermod -aG docker ec2-user

//도커 관련 권한
sudo chmod 666 /var/run/docker.sock

도커 그룹에 사용자를 추가했다면, 다음에 접속할 때는 sudo 없이 명령어를 입력할 수 있다. (ex: docker run hello-world)

 

2) 이미지 가져오기

//이미지 가져오기
sudo docker pull dockerID/허브Repo이름

 

3) 도커 이미지로 컨테이너 실행 (배포)

//컨테이너 실행
sudo docker run -p 8080:8080 dockerID/허브Repo이름

 

다음과 같이 애플리케이션이 실행된다.

 

4) 주소창에 http://{퍼블릭IPv4}:8080 입력

정상적으로 배포된 것을 확인할 수 있다.

728x90

'DevOps' 카테고리의 다른 글

[DevOps] 윈도우 ElasticSearch 8.x 다운로드 및 키바나 연동  (0) 2024.07.28
[Docker] Github Actions, Docker, AWS EC2 사용한 CI/CD (Spring Boot)  (0) 2023.09.15
[Docker] Docker Hub에 도커 이미지 업로드  (0) 2023.05.22
[Jenkins] Jenkins와 깃허브 연동  (0) 2023.05.08
[JenKins] JenKins 설치  (0) 2023.05.08
    'DevOps' 카테고리의 다른 글
    • [DevOps] 윈도우 ElasticSearch 8.x 다운로드 및 키바나 연동
    • [Docker] Github Actions, Docker, AWS EC2 사용한 CI/CD (Spring Boot)
    • [Docker] Docker Hub에 도커 이미지 업로드
    • [Jenkins] Jenkins와 깃허브 연동
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바