이전에 maven으로 빌드할 때는 maven을 설치하고 .jar 파일을 이용하여 이미지를 생성하였다. 그러나 gradle은 버전 문제로 강사님이 Dockerfile을 작성하고 배포 연습을 하였다. 일단 그 과정만 기록을 하겠다.
contextLoads()
메소드를 제거한다.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"
]
git push
git clone 받기
프로젝트 루트 디렉토리로 들어가서 build
docker build -t sb-bbs . #-t : --tag 이미지 이름, 태그 설정
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://[ec2주소] -e SPRING_DATASOURCE_PASSWORD=[mysql비밀번호] -d sb-bbs
docker logs [container ID]