openjdk docker build 오류 발생시 해결방법

여느때와 같이 docker 이미지 빌드작업을 하다 오류가 발생했다. openjdk 를 사용중이었는데, 뭔가 변화가 생긴거 같아 확인을 해봤다. 느낌엔 더 이상 관리가 되지 않아 서버에서 삭제되었거나 이름이 바뀌었기 때문일 확률이 매우 높아보였다.

에러메시지

docker build 명령어를 실행했더니 아래와 같은 메시지가 발생했다.

[+] Building 6.6s (3/3) FINISHED
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 986B                                       0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => ERROR [internal] load metadata for docker.io/library/openjdk:11.0-jdk  6.5s
------
 > [internal] load metadata for docker.io/library/openjdk:11.0-jdk-bullseye:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: docker.io/library/openjdk:11.0-jdk-bullseye: not found

docker 페이지 "이 이미지는 공식적으로 지원이 중단(Deprecated)되었습니다. 모든 사용자는 가능한 한 빨리(ASAP) 적절한 대체 이미지를 찾아 전환할 것을 권장합니다." 라고 되어 있다.

DEPRECATION NOTICE

This image is officially deprecated and all users are recommended to find and use suitable replacements ASAP. Some examples of other Official Image alternatives (listed in alphabetical order with no intentional or implied preference):

* amazoncorretto
* eclipse-temurin
* ibm-semeru-runtimes
* ibmjava
* sapmachine

해결방법은?

별거 없다 대체 docker 이미지로 변경했다. 물론 베이스 이미지가 바뀌는 거라서 각종 기능테스트를 해보고 정상적으로 전환여부를 판단해야겠지만, 간단한 개인적인 프로젝트여서 안되는게 있으면 그때그때 수정하는 게 나아보였다.

Dockerfile의 한줄만 수정했다. 데비안OS 이미지를 주로 쓰기 때문에, eclipse-temurin:11-jdk-focal로 대체했다. 정상적으로 빌드까지 했고, 기능에 전혀 문제가 없었다. 나중에.. jdk 버전을 올리긴해야할텐데.. 언제하지.

# 26-04-18 더이상 openjdk:11.0-jdk-bullseye 제공되지 않음.
# FROM openjdk:11.0-jdk-bullseye 주석처리.
FROM eclipse-temurin:11-jdk-focal
java  docker 

더 보면 좋을 글들