Untitled

<aside> 💡 Spring은 대중적으로 많이 사용되고 있는 Java 기반 웹 프레임워크입니다. 도커에서는 Spring으로 제작된 웹 서비스도 컨테이너 형태로 실행이 가능합니다. 다만, 사전에 프로젝트가 maven 혹은 gradle로 빌드가 되어야 하기 때문에 Dockerfile 작성 시, 주의해야 합니다.

</aside>

<aside> 💡 실제 프로젝트를 어떤 식으로 빌드하는지 좀 더 쉽게 파악하기 위해 예시 소스를 하단 링크를 통해 전달 드립니다. 해당 프로젝트는 Spring Boot로 간단한 게시판 글을 생성하는 API를 구현한 것입니다.

</aside>

GitHub - ggingmin/springboot-sample-app

FROM openjdk:8-jdk-alpine as builder
# JDK 1.8 버전을 베이스로 설정한 후 builder로 alias 처리합니다.

COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
# Spring Boot 프로젝트 내의 gradle 설정 파일과 소스코드를 이미지로 가져옵니다.

RUN chmod +x ./gradlew
RUN ./gradlew bootjar
# gradlew 에 실행권한을 부여하고 프로젝트를 jar 형식의 파일로 빌드합니다.

FROM openjdk:8-jdk-alpine
# 위에서 빌드한 jar 파일을 실행해 주기 위해 다시 JDK 1.8 버전을 베이스로 설정합니다.

COPY --from=builder build/libs/*.jar springboot-sample-app.jar
VOLUME /tmp
EXPOSE 8080
# builder를 통해 생성된 jar 파일을 이미지로 가져옵니다.
# 8080 포트를 공개한다고 명시합니다.

ENTRYPOINT ["java", "-jar", "/springboot-sample-app.jar"]
# 가져온 jar 파일을 실행시킵니다.