Docker로 Spring Boot 실행하기(with MySQL 연동)

KDG: First things first!·2024년 10월 9일
0

Docker

목록 보기
1/1
post-thumbnail

프로젝트 환경

  • Spring Boot - Version : 3.3.4
  • JDK : 1.17
  • DB : MySQL 8.3.0
  • IDE : IntelliJ Ultimate
  • Docker - Verson : 27.2.0


도커로 스프링 부트 실행하기

0. 도커 설치

윈도우 : https://with-rl.tistory.com/entry/Windows에-Docker-Desktop-설치하기
맥 : https://happylie.tistory.com/78


도커가 설치되었으면 터미널(PowerShell)에서

docker -version

해당 명령어를 입력하였을 때 도커의 버전이 나온다면 성공적으로 설치된 것이다.



1. Dockerfile 작성

Dokerfile : docker 이미지를 어떻게 만들 것인지 설정을 저장하는 파일.

프로젝트 최상단에 Dockerfile을 작성한다.


[Dockerfile 예시]

# base 이미지 설정
FROM openjdk:17-jdk-slim

# 해당 위치의 jar 파일을 컨테이너 내부에 복사
COPY build/libs/*.jar app.jar

# 외부 호스트 8080 포트로 노출
EXPOSE 8080

# 실행 명령어
CMD ["java", "-jar", "app.jar"]


2. 애플리케이션 Build로 JAR 파일 생성

JAR: Java ARchive의 약자로, 여러 파일(Java 클래스 파일, 리소스 파일 등)을 하나의 압축된 파일로 묶어주는 포맷이다.
JAR 파일은 주로 Java 애플리케이션을 배포할 때 사용되며, Java에서 실행 가능한 애플리케이션이나 라이브러리를 패키징하는 데 주로 사용된다.


해당 위치로 이동한 후 build하면 (Gradle을 사용하는 경우)

cd [~워킹 디렉토리 위치]
 ./gradlew clean build 

jar 파일이 생겨난 것을 확인할 수 있다.



혹은 Gradle - build - bootJar를 실행해도 Jar 파일은 생성된다.



3. 도커 이미지 생성


이제 배포하고자 하는 파일을 도커 이미지로 만들어야 한다.

이미지 : 도커 이미지(Docker Image)는 애플리케이션을 실행하기 위한 모든 파일, 라이브러리, 설정 등을 포함한 읽기 전용 템플릿이다.
도커 이미지는 Docker 컨테이너를 생성할 때 사용되며, 컨테이너는 해당 이미지를 기반으로 동작하는 방식이다.


[도커 이미지 생성]

docker build -t [도커 이미지에 붙일 이름] .

이 때 ' . '을 꼭 붙여주어야 한다.


성공적으로 이미지가 생성되었는지 확인하기 위해서

docker images

커맨드를 입력하면 현재 존재하는 이미지들에 대한 정보를 확인할 수 있다.


혹은 Docker DeskTop의 Images 탭에서 현재 존재하는 이미지들을 확인할 수도 있다.



4. 도커 컨테이너로 도커 이미지 실행


이제 생성한 도커 이미지를 도커 컨테이너로 실행하면 된다.

도커 컨테이너 : 도커 컨테이너(Docker Container)는 도커 이미지를 기반으로 실행되는 독립적인 실행 환경이다. 컨테이너는 도커 이미지를 실행한 결과물로, 이미지에 포함된 애플리케이션이 실제로 동작하는 환경을 제공한다.


docker run -it -d --rm --name test-docker-container -p 8080:8080 test-docker
  • docker run ~ [이미지 이름] : 컨테이너 생성 및 실행
  • -it : 컨테이너에 터미널 커맨드로 명령 입력 가능
  • -d : 컨테이너 백그라운드에서 실행
  • --rm : 컨테이너 종료, 중지되면 자동 삭제
  • --name [붙일 컨테이너 이름] : 컨테이너 Alias(없으면 컨테이너 ID 사용)
  • -p [localhost port] : [docker post] : 로컬 호스트의 포트와 도커의 포트 연결

도커 컨테이너가 잘 생성 및 실행되었는지 확인하고 싶다면

docker ps -a

커맨드를 통해 확인하거나


Docker DeskTop의 Container 탭에서 확인하면 된다.


[도커 컨테이너 상태 변화 명령 커맨드]

# Docker 컨테이너 중지
$ docker stop [도커 컨테이너 이름 or ID]

# Docker 컨테이너 시작
$ docker start [도커 컨테이너 이름 or ID]

# Docker 컨테이너 재시작
$ docker restart [도커 컨테이너 이름 or ID]


컨테이너를 실행 후 localhost:8080으로 접속해보면

페이지가 잘 열리는 것을 확인할 수 있다.

도커로 성공적으로 서버를 실행하였다.




이제 도커를 이용하여 MySQL을 연동해보자.

마찬가지로 MySQL도 똑같이 도커 이미지를 만들고 컨테이너를 실행하는 방식으로 하면 된다.




도커로 MySQL 실행하기


1. MySQL 도커 이미지 생성

docker pull mysql(:버전)

해당 커맨드를 입력하면 MySQL 측에서 이미 배포해둔 MySQL 도커 이미지를 다운로드할 수 있다.
만약 mysql 뒤를 생략하면 자동으로 최신 버전(latest)이 다운되고 버전을 명시해주면 해당 버전을 다운로드할 수 있다.



2. MySQL 컨테이너 생성 및 실행

 docker run -it -d --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 mysql
  • -e : [환경 변수 이름 = 값] 설정 (여기서는 MySQL의 DB 비밀번호를 1234로 설정)


3. MySQL 접속 및 DB 연결

 docker exec -it mysql mysql -u root -p

컨테이너 내부에 접속하는 docker exec 로 mysql 컨테이너에 접속한 후


비밀번호를 입력하고

create database [DB 이름] # DB 생성
use [DB 이름] # DB 연결

MySQL 명령어로 DB를 설정하면 도커 컨테이너를 이용한 MySQL 연결이 완료된다.

profile
알고리즘, 자료구조 블로그: https://gyun97.github.io/

0개의 댓글