Alpine Linux를 기반으로 JDK용 Docker 이미지 작성

Alpine Linux 소개

Alpine Linux는 경량 Linux 배포판으로, 일반적인 Linux 배포판과 달리 musl C 라이브러리와 BusyBox를 사용하여 시스템 크기와 실행 시의 자원 사용량을 줄입니다.

Alpine 기반 기본 이미지 만들기

최신 버전의 이미지 파일을 다운로드하세요: https://mirrors.aliyun.com/alpine/v3.19/releases/x86_64/alpine-minirootfs-3.19.1-x86_64.tar.gz

공식 주소:

https://github.com/alpinelinux/docker-alpine/blob/v3.19/x86_64/Dockerfile

Dockerfile 내용:
FROM scratch
ADD alpine-minirootfs-3.19.1-x86_64.tar.gz /
CMD ["/bin/sh"]
Alpine 기본 이미지 건축:
docker build -t alpine:v3.19.1 .

JDK용 Alpine 이미지 만들기

Alpine는 일반 Linux와 달리 glibc와 같은 일부 라이브러리를 포함하지 않습니다. Java 애플리케이션을 실행하려면 필요한 몇 가지 의존성 라이브러리를 설치해야 합니다. glibc 설치 패키지를 미리 다운로드하여 이미지에 복사하세요.

glibc 패키지 다운로드: glibc-2.35-r1.apk, glibc-bin-2.35-r1.apk, glibc-dev-2.35-r1.apk, glibc-i18n-2.35-r1.apk

https://github.com/sgerrand/alpine-pkg-glibc/releases/

키 다운로드:

wget https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
Dockerfile 내용:
FROM alpine:v3.19.1
MAINTAINER lyx
WORKDIR /opt
# Alpine 소스 변경
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
# 패키지 업데이트
RUN apk update && apk upgrade
RUN apk --no-cache --upgrade add ca-certificates
ADD sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub
# 기본 툴리즈 설치
RUN apk add --no-cache bash bash-doc bash-completion
RUN apk add --no-cache wget curl net-tools
RUN /bin/bash
# glibc 설치
COPY glibc-2.35-r1.apk /opt
COPY glibc-bin-2.35-r1.apk /opt
COPY glibc-dev-2.35-r1.apk /opt
COPY glibc-i18n-2.35-r1.apk /opt
RUN apk add --no-cache --force-overwrite glibc-2.35-r1.apk glibc-bin-2.35-r1.apk glibc-dev-2.35-r1.apk glibc-i18n-2.35-r1.apk
# 임시 파일 삭제
RUN rm -f glibc-2.35-r1.apk glibc-bin-2.35-r1.apk glibc-dev-2.35-r1.apk glibc-i18n-2.35-r1.apk
# 날짜 설정
RUN apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 폰트 설정 (Java 애플리케이션용)
RUN apk add --no-cache fontconfig
RUN rm -rf /var/cache/apk/*
# 언어 설정 (한글乱码 해결)
RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
ENV LANG=en_US.UTF-8
# JDK 설치
ADD jdk-8u401-linux-x64.tar.gz /opt
# Java 환경 변수 설정
ENV JAVA_HOME=/opt/jdk1.8.0_401
ENV JRE_HOME=/opt/jdk1.8.0_401/jre
ENV CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
# 라이크로 연결 (라이브러리 파일 오류 해결)
RUN ln -sf /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
CMD ["java","-version"]
Dockerfile 실행하여 이미지 만들기:
docker build -t alpinejdk:v1 .
컨테이너 실행:
docker run -it --name alpinejdk alpinejdk:v1 /bin/sh
JDK 테스트:
java -version

태그: Dockerfile Alpine Linux JDK java Docker 이미지

7월 16일 17:32에 게시됨