728x90
이번에는 도커를 활용해 스프링부트 앱을 사용해보려고 한다. 도커 이미지 파일을 생성하고 실행해보자
이전 도커 없이 spring boot 프로젝트 실행하기
https://sh970901.tistory.com/60?category=958061
gradle => JDK => 소스를 컴파일하면 => jar 파일(실행 파일 + 톰캣)이 생성
사실 (jar파일 + java)만 있으면 모든 실행환경이 조성된다. 이를 만들기 위해 도커라이즈(도커화) 시키는 작업이 필요하다.
도커라이즈 하는 방법 참고 => https://spring.io/guides/gs/spring-boot-docker/
DB 사용앱을 도커라이즈 => https://sh970901.tistory.com/62
Dockerfile 생성
- vim Dockerfile
# m1 이라면 openjdk:17-jdk-alpine 대신 openjdk:17 사용
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=build/libs/projectname-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]
FROM openjdk:17-jdk-alpine
도커는 하나하나가 리눅스이다. alpine(가벼운 리눅스)에 openjdk 17이 설치되어있다. (도커허브에 존재) => 환경을 조성
ARG JAR_FILE=build/libs/프로젝트명-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
위(변수 선언)를 아래(app.jar)에 복사
EXPOSE 8080
8080 포트를 사용하겠다.
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]
실행 명령
sbhello 도커 이미지 생성
- docker build -t sbhello .
- sbhello라는(tag) 이미지를 현재 폴더에 생성
- openjdk (기존 이미지)를 이용하여 sbhello라는 이미지를 생성하였다.
sbhello 이미지 실행
docker run \
--name=sbhello_1 \
-p 8080:8080 \
-d \
sbhello
sbhello_1이라는 컨테이너 이름으로 외부, 내부 포트를 지정, 백그라운드로 돌림(detach), sbhello라는 이미지 실행
실행 결과
**참고**
소드 코드 업데이트로 인한 재 배포시에는 기존 프로젝트에 git pull을 받고 재빌드(/gradlew clean build )후 이미지를 생성하여 런해주면 된다.
그래들 빌드, Dockerfile 생성, 도커 이미지 생성을 대신 해주는 명령어
- /gradlew bootBuildImage
- 이 때 수행되는 소스코드빌드에서는 테스트가 스킵된다. (DB가 없어도 만들어짐 gradlew clean build skip-test)
- 만들어진 이미지 이름이 앱이름:앱버전의 형태
'IT' 카테고리의 다른 글
JPA(Java Persistence API)를 왜 쓰는가? (2) | 2022.09.19 |
---|---|
리눅스에서 DB 사용 앱을 도커라이즈1(172.17.0.1 이 무엇인가 ) (0) | 2022.09.18 |
Linux(centOS9) 설정 8(스프링부트 앱 빌드하여 실행하기) (0) | 2022.09.18 |
리눅스에서 도커(Docker) 활용하기 4(nginx 이미지 생성 및 실행) (0) | 2022.09.18 |
리눅스에서 도커(Docker) 활용하기 3(node.js설치 및 이미지 생성, 실행) (0) | 2022.09.18 |