Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

개발일기

Arm64용 Jenkins Docker 이미지 생성하기 본문

Develop

Arm64용 Jenkins Docker 이미지 생성하기

자바칩 2021. 5. 29. 23:48

회사에서는 Windows 서버에 젠킨스를 직접 설치해서 사용중이다.

 

개인적으로 사용하기 위해 집에서 여러 서버용도로 사용하고 있는 라즈베리파이에 docker 컨테이너 형식으로 젠킨스를 설치했다.

 

DockerHub의 Jenkins 공식 이미지는 amd64용으로만 존재하기에 해당 이미지의 Dockerfile을 참조하여 

직접 Dockerfile을 만들었다.

 

Dockerfile

FROM openjdk:8-jdk

RUN wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add -

RUN echo "deb https://pkg.jenkins.io/debian-stable binary/" > /etc/apt/sources.list.d/jenkins.list

RUN apt update && apt install -y git curl jenkins && rm -rf /var/lib/apt/lists/*

# for main web interface:
ARG http_port=8080
EXPOSE ${http_port}

# will be used by attached slave agents:
ARG agent_port=30000
EXPOSE ${agent_port}

VOLUME /var/lib/jenkins
COPY jenkins.sh /usr/local/bin/jenkins.sh

ENTRYPOINT ["bash","/usr/local/bin/jenkins.sh"]

 

ENTRYPOINT 용 jenkins.sh 파일

#!/bin/bash

: "${JENKINS_HOME:="/var/lib/jenkins"}"
: "${COPY_REFERENCE_FILE_LOG:="${JENKINS_HOME}/copy_reference_file.log"}"

touch "${COPY_REFERENCE_FILE_LOG}" || { echo "Can not write to ${COPY_REFERENCE_FILE_LOG}. Wrong volume permissions?"; exit 1; }
echo "--- Copying files at $(date)" >> "$COPY_REFERENCE_FILE_LOG"
# find /usr/share/jenkins/ref/ \( -type f -o -type l \) -exec bash -c '. /usr/local/bin/jenkins-support; for arg; do copy_reference_file "$arg"; done' _ {} +

# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then

  # read JAVA_OPTS and JENKINS_OPTS into arrays to avoid need for eval (and associated vulnerabilities)
  java_opts_array=()
  while IFS= read -r -d '' item; do
    java_opts_array+=( "$item" )
  done < <([[ $JAVA_OPTS ]] && xargs printf '%s\0' <<<"$JAVA_OPTS")

  jenkins_opts_array=( )
  while IFS= read -r -d '' item; do
    jenkins_opts_array+=( "$item" )
  done < <([[ $JENKINS_OPTS ]] && xargs printf '%s\0' <<<"$JENKINS_OPTS")

  exec java -Duser.home="${JENKINS_HOME}" "${java_opts_array[@]}" -jar /usr/share/jenkins/jenkins.war "${jenkins_opts_array[@]}" "$@"
fi

# As argument is not jenkins, assume user want to run his own process, for example a `bash` shell to explore this image
exec "$@"

 

Docker Image Build

docker build --tag jenkins:arm64 .

 

Docker Container 생성

docker run -d -it --name Jenkins -p 9090:8080 -v /var/lib/jenkins/:/var/lib/jenkins/ jenkins:arm64

'Develop' 카테고리의 다른 글

Jenkins 초기 설정  (0) 2021.05.30
Ubuntu 19.04 개인적인 기본 셋팅  (0) 2019.08.25
Comments