문제:
기본 jnlp파일을 사용하지 않고 java 21을 사용하고, kubectl 도 사용하는 커스텀 jnlp파일을 사용했는데 docker hub에 업로드하는 과정에서 계속 빌드 오류가 났습니다.
에러 코드:
ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates && echo \"deb http://deb.debian.org/debian bookworm-backports main\" > /etc/apt/sources.list.d/backports.list && apt-get update && apt-get install -y -t bookworm-backports --no-install-recommends openjdk-21-jdk && apt-get install -y --no-install-recommends docker.io curl && curl -LO \"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${TARGETARCH}/kubectl\" && install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && rm kubectl && apt-get clean && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
원인:
“아키텍쳐” 문제
로그에 arm64라고 표시된 것처럼, 현재 Apple Silicon(M1/M2/M3) Mac과 같은 ARM 아키텍처 환경에서 Docker 이미지를 빌드하고 있었습니다.
문제는 openjdk-21-jdk 패키지가 데비안 backports 저장소에 amd64(일반적인 Intel/AMD PC)용으로는 존재하지만, arm64용으로는 제공되지 않는다는 점입니다. 따라서 apt-get 명령어는 저장소에 접속하더라도 해당 아키텍처의 패키지를 찾을 수 없어서 계속 오류를 발생시킨 것입니다.
따라서, 패키지 관리자 (apt)를 통해서 설치할 수 없으므로 java 21을 수동으로 직접 다운로드하여 설치하는 방식으로 Dockerfile을 수정해야 합니다.
Dockerfile 수정사항:
- apt-get으로 Java를 설치하는 대신, wget을 사용하여 신뢰할 수 있는 Adoptium(Eclipse Temurin) 프로젝트에서 Java 21 바이너리(tar.gz 파일)를 직접 다운로드합니다.
- 다운로드한 파일을 /opt/jdk 디렉터리에 압축 해제하여 설치합니다.
- JAVA_HOME 환경 변수를 새로운 설치 경로인 /opt/jdk로 정확하게 지정합니다.
'트러블슈팅' 카테고리의 다른 글
| 카카오 클라우드 & Kubernetes 환경에 CD (수정사항) - 6 (3) | 2025.08.22 |
|---|---|
| 카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 5 (2) | 2025.08.12 |
| 카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 3 (4) | 2025.08.10 |
| 카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 2 (2) | 2025.08.10 |
| 카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 1 (0) | 2025.08.10 |