문제 상황
- CI/CD 배포 도중 Dockerfile에서 에러 발생

Run docker build . --file Dockerfile --tag fitview-be:latest
#0 building with "default" instance using docker driver
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 337B done
#1 DONE 0.0s
#2 [auth] library/openjdk:pull token for registry-1.docker.io
#2 DONE 0.0s
#3 [internal] load metadata for docker.io/library/openjdk:17-jdk-slim
#3 ERROR: docker.io/library/openjdk:17-jdk-slim: not found
------
> [internal] load metadata for docker.io/library/openjdk:17-jdk-slim:
------
Dockerfile:1
--------------------
1 | >>> FROM openjdk:17-jdk-slim
2 | COPY build/libs/app-0.0.1-SNAPSHOT.jar app.jar
3 | #ENTRYPOINT ["java", "-jar", "/app.jar"]
--------------------
ERROR: failed to build: failed to solve: openjdk:17-jdk-slim: failed to resolve source metadata for docker.io/library/openjdk:17-jdk-slim: docker.io/library/openjdk:17-jdk-slim: not found
Error: Process completed with exit code 1.
문제 인식
Dockerfile - FROM 란에서 에러가 발생한 것으로 확인

문제 원인
https://github.com/docker-library/openjdk/tree/master
- github → Docker Official Images → openjdk
- 도커에서 제공하는 openjdk가 deprecated 되었다고 명시되어있음
- 공식 문서에서는 openjdk를 대체할 목록을 제시
- amazoncorretto
- eclipse-temurin
- ibm-semeru-runtimes
- ibmjava
- sapmachine
- 결론
- openjdk는 더이상 지원안하고, 다른 대체제를 찾아야함

openjdk 대체제 선택
- openjdk를 대체하기 위해서 다음 중에서 선택이 필요
- amazoncorretto
- eclipse-temurin
- ibm-semeru-runtimes
- ibmjava
- sapmachine
- 결과적으로 다음과 같은 선택지로 좁힘
- amazoncorretto
- eclipse-temurin
- ⇒ 제일 많은 다운로드 수를 기록하기 때문에 2개 중에서 선택하는게 안정적일 것이라 판단
최종적으로 eclipse 선택
- 이유
1. 더 많은 업데이트
- https://github.com/adoptium/containers - eclipse


- ⇒ eclipse 쪽에서 확연히 더 많은 업데이트가 이뤄짐
2. 사용이 용이함
- https://hub.docker.com/_/eclipse-temurin
- https://hub.docker.com/_/amazoncorretto
- ⇒ eclipse 쪽이 더 친절하게 사용 설명이 되어있음
최종) Dockerfile 수정
- FROM openjdk:17-jdk-slim
- → FROM eclipse-temurin:17-jdk-jammy
#FROM openjdk:17-jdk-slim
FROM eclipse-temurin:17-jdk-jammy
COPY build/libs/app-0.0.1-SNAPSHOT.jar app.jar
#ENTRYPOINT ["java", "-jar", "/app.jar"]
# JVM 시간 설정 - 서울 기준 (스케쥴러 작동을 위함)
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-Duser.timezone=${TZ}", "-jar", "/app.jar"]