[Docker] gradle로 빌드하여 도커로 배포하기

Coastby·2022년 11월 15일
1

LIKELION Back-End School

목록 보기
58/61

이전에 maven으로 빌드할 때는 maven을 설치하고 .jar 파일을 이용하여 이미지를 생성하였다. 그러나 gradle은 버전 문제로 강사님이 Dockerfile을 작성하고 배포 연습을 하였다. 일단 그 과정만 기록을 하겠다.

✅ 서버에서 gradle 빌드 오류로 사전 작업

  1. 테스트를 스킵해도 에러가 나서 기본 test 파일의 contextLoads() 메소드를 제거한다.
  2. package하여 jar 파일이 생성되는지 확인한다.
  3. Dockerfile을 작성한다. (jar 파일이름은 나의 프로젝트와 맞게 바꾼다)
FROM gradle:7.4-jdk11-alpine as builder
WORKDIR /build

# 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함.
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true

# 빌더 이미지에서 애플리케이션 빌드
COPY . /build
RUN gradle build -x test --parallel

# APP
FROM openjdk:11.0-slim
WORKDIR /app

# 빌더 이미지에서 jar 파일만 복사
# COPY --from=builder /build/build/libs/*-SNAPSHOT.jar ./app.jar
COPY --from=builder /build/build/libs/bbs-0.0.1-SNAPSHOT.jar .

EXPOSE 8080

# root 대신 nobody 권한으로 실행
USER nobody
ENTRYPOINT [                                                \
   "java",                                                 \
   "-jar",                                                 \
   "-Djava.security.egd=file:/dev/./urandom",              \
   "-Dsun.net.inetaddr.ttl=0",                             \
   "bbs-0.0.1-SNAPSHOT.jar"             \  #또는 "app.jar"
]
  1. git push

1️⃣ Docker build

  1. git clone 받기

  2. 프로젝트 루트 디렉토리로 들어가서 build

docker build -t sb-bbs . 		#-t : --tag 이미지 이름, 태그 설정

2️⃣ Container 실행

docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://[ec2주소] -e SPRING_DATASOURCE_PASSWORD=[mysql비밀번호] -d sb-bbs

✅ Container log 확인하기

docker logs [container ID]
profile
훈이야 화이팅

0개의 댓글