Spring Boot 3.2에서 Docker 사용하기

lv2dev·2024년 1월 31일
0

docker는 3학년때 들었던 강의해서 사용해 본 적이 있다. 그때는 mongoDB + node 조합으로 배웠지만 이번엔 MariaDB + Spring Boot 조합으로 사용할 것이다.
분명 그때 시험공부한다고 뭔갈 잔뜩 외웠는데 기억에 남는것은 이리도 없는 것인가...

Docker

리눅스 컨테이너를 기반으로 하는 오픈소스 가상화 플랫폼이다.
즉슨... 가상화된 컨테이너라는 것을 띄워서 그 위에서 돌려주는 것이다.

VM vs Docker

잘 정리된 블로그가 있어서 가져왔다. 요지는 VM은 Guest OS 위에 Bins/Libs를 올려서 겁나 무겁지만 Docker는 바로 올려서 상대적으로 가볍다는 것이다.

장점

  • 성능향상(VM 대비)
  • 뛰어난 이식성
  • 쉽게 Scale Out을 할 수 있는 유연성, 확장성
  • 빠른 배포와 롤백

단점

  • 일부 애플리케이션의 호환성 문제
  • 컨테이너 관리의 복잡성
  • 보안 문제가 있을 수 있음
  • 성능저하 (Native대비)

참고


Spring Boot 3.2에 적용해보기

Docker 설치하기

dockerfile 작성하기

  • dockerfile은 docker 에서 이미지를 생성하기 위한 용도로 작성하는 파일이다.
  • docker 이미지를 만들고 docker build [옵션] [작성한 dockerfile 경로] 와 같이 작성하면 작성한 도커파일의 내용을 기반으로 이미지 빌드가 시작된다.
  • 경로는 프로젝트의 루트에 두면 된다.
# Java 런타임을 포함하는 베이스 이미지로 시작
FROM amazoncorretto:17

# 유지보수자 정보 추가
LABEL maintainer="lv2dev@example.com"

# /tmp에 볼륨 추가
VOLUME /tmp

# 이 컨테이너 외부로 8099 포트를 사용 가능하게 함
EXPOSE 8099

# 애플리케이션의 jar 파일
ARG JAR_FILE=build/libs/*.jar

# 애플리케이션의 jar 파일을 컨테이너에 추가
ADD ${JAR_FILE} app.jar

# jar 파일 실행
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

localhost

  • 기존에 native에서 돌리던 프로젝트를 docker로 옮길 시에는 localhost를 주의해야 한다. 컨테이너 안이 localhost이기 때문이다.
  • 만약 외부의 mariadb를 실행하고 싶다면 아래와 같이 properties를 수정한다.
spring.datasource.url=jdbc:mariadb://host.docker.internal:3306/mydb

실행하기

# JAR 파일 빌드
./gradlew build

# Docker 이미지 빌드
docker build -t lv2dev/echonet .

# Docker 컨테이너 실행
docker run -p 8099:8099 lv2dev/echonet

스프링 로고

profile
언제나 레벨업을 하고 싶은 영원한 lv1

0개의 댓글