-
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"]
위와 같이 작성한 뒤로는 제대로 실행되고 있다. 역시 공식 문서를 제대로 읽어야겠다는 생각이 들었다.
반응형'프로그래밍' 카테고리의 다른 글
linuxserver/ffmpeg 에서 drawtext 사용 시 한글 문제 (1) 2024.07.14 Java heap memory 늘리기 (0) 2024.06.26 MySQL - 쿼리 작성 순서와 실제 실행 순서 (0) 2023.07.29 [Spring Boot] @ModelAttribute 와 @RequestBody 의 차이 (0) 2023.05.21 [Spring Boot] CORS 문제 (0) 2023.05.21