본문 바로가기

Devops/Docker

Dockerfile을 사용한 maven 이미지 커스텀

반응형

 

maven 이미지를 Jenkins Kubernetes 플러그인에서 사용하고 있는데 작업 시 Pod가 기동되면서 내가 사용할 기능이 추가되도록 이미지를 커스텀하였다.

 

필요기능

1. Jenkins 파이프라인에서 도커 이미지를 Build 후 Push 하도록 구성하여 이미지에 도커가 설치되어 있어야 한다.

2. Sonarqube 관련해서 Jenkins 파이프라인에 연동이 되어 있기에 Java Keystore에 인증서가 추가되어 있어야 한다.

 

기본 이미지는 maven:3.8.4-openjdk-11을 가지고 진행하였다.

 

# 기본 이미지 설정
FROM maven:3.8.4-openjdk-11

# 환경 변수 설정
ENV PATH=/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV JAVA_HOME=/usr/local/openjdk-11
ENV LANG=C.UTF-8
ENV JAVA_VERSION=11.0.15
ENV MAVEN_HOME=/usr/share/maven
ENV MAVEN_CONFIG=/root/.m2

# Docker 설치를 위한 패키지 설치 및 설정
RUN apt-get update && \
    apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt-get update && \
    apt-get install -y docker-ce docker-ce-cli containerd.io

# 인증서 추가
COPY ../ca.crt /tmp/ca.crt
RUN keytool -import -trustcacerts -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt -alias mycert -file /tmp/ca.crt

# 엔트리포인트 설정
ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]

# 기본 실행 명령어 설정
CMD ["mvn"]

 

추후 해당 이미지로 Jenkins Kubernetes 플러그인 적용하고 정상 작동 확인/ 기본 이미지 사용 시 에러 발생 확인 할 것 

반응형

'Devops > Docker' 카테고리의 다른 글

Dockerfile을 사용한 java keystore ssl 인증서 추가  (0) 2024.07.18