ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dockerfile 작성 시 주의할 점
    프로그래밍 2024. 6. 26. 16:17
    반응형

    이전 Dockerfile

    FROM openjdk:17-jdk-alpine as builder
    COPY gradlew .
    COPY gradle gradle
    COPY build.gradle .
    COPY settings.gradle .
    COPY src src
    RUN chmod +x ./gradlew
    RUN ./gradlew bootJar
    
    FROM builder as ffmpeg
    RUN apk update
    RUN apk add --no-cache ffmpeg
    
    FROM ffmpeg as execute
    COPY build/libs/*.jar app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "/app.jar"]

     

    여기서 문제점은 COPY build/libs/*.jar app.jar 였다.

    as 문법을 통해서 Multi-stage 를 구현하는 것은 이해했는데, COPY 문법에 대해 제대로 이해하지 못했다.

     

    COPY <src> <dest> 와 같이 사용하는데, 여기서 src는 현재 내 컴퓨터의 위치에서의 경로를 의미하고, dest는 도커 컨테이너 내의 위치를 의미하는 것이었다. 그래서 위에서 열심히 빌드해놓고 엉뚱한 jar 파일을 받아와서 계속 변경사항이 반영이 안되는 문제가 있었다.

     

    수정 Dockerfile

    FROM linuxserver/ffmpeg:7.0.1 as build
    RUN apt update
    RUN apt install -y openjdk-17-jdk
    COPY gradlew .
    COPY gradle gradle
    COPY build.gradle .
    COPY settings.gradle .
    COPY src src
    RUN chmod +x ./gradlew
    RUN ./gradlew bootJar
    
    FROM build as execute
    COPY --from=build build/libs/*.jar app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-Xms1024m", "-Xmx1024m", "-jar", "/app.jar"]

     

    위와 같이 작성한 뒤로는 제대로 실행되고 있다. 역시 공식 문서를 제대로 읽어야겠다는 생각이 들었다.

    반응형
Designed by Tistory.