Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,4 @@
FROM amazoncorretto:21
COPY build/libs/*SNAPSHOT.war app.war

ENTRYPOINT [
"java",
"-Duser.timezone=GMT+9",
"-Djava.security.egd=file:/dev/./urandom",
"-XX:+UseG1GC",
"-XX:MaxGCPauseMillis=100",
"-Xms2g",
"-Xmx2g",
"-jar", "/app.war"
]
ENTRYPOINT ["java", "-Duser.timezone=GMT+9", "-Djava.security.egd=file:/dev/./urandom", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-Xms2g", "-Xmx2g", "-jar", "/app.war"]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

ENTRYPOINT를 한 줄로 수정한 것은 좋지만, 몇 가지 개선할 점이 보입니다.

  1. 불필요한 egd 속성: Java 21을 사용하시므로 -Djava.security.egd=file:/dev/./urandom 옵션은 더 이상 필요하지 않습니다. Java 9부터는 /dev/urandom이 기본 엔트로피 소스로 사용됩니다.
  2. 하드코딩된 메모리 설정: -Xms2g -Xmx2g와 같이 JVM 힙 크기가 하드코딩되어 있어 유연성이 떨어집니다.

이 문제들을 해결하기 위해, 환경 변수를 사용하여 메모리 설정을 동적으로 주입하고 exec를 사용하는 것을 권장합니다. 아래 제안과 같이 ENTRYPOINT를 변경하고, 이 줄 앞에 ENV JAVA_OPTS="-Xms2g -Xmx2g"를 추가해주세요. exec를 사용하면 Java 프로세스가 컨테이너의 PID 1로 실행되어 Docker 시그널을 올바르게 처리할 수 있습니다.

또한, 파일 끝에 개행 문자를 추가하는 것이 좋은 컨벤션입니다.

ENTRYPOINT ["sh", "-c", "exec java -Duser.timezone=GMT+9 -XX:+UseG1GC -XX:MaxGCPauseMillis=100 $JAVA_OPTS -jar /app.war"]

Loading