docker, docker-compose 를 사용하여 local 혹은 dev jenkins 를 만들수 있다. docker 로 jenkins를 설치 하기 위해 3가지 파일을 준비한다.

.ENV

# VOLUMES : Docker 머신에서 사용하는 물리적인 디렉토리를 실제 디렉토리로 변경
JENKINS_HOME=./jenkins_home

Dockerfile

# jenkins 이미지 설정
FROM jenkins/jenkins:lts-jdk11
# user 변경 (root)
USER root

# jenkins 에서 사용할 docker 설정
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \\
  <https://download.docker.com/linux/debian/gpg>
RUN echo "deb [arch=$(dpkg --print-architecture) \\
  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \\
  <https://download.docker.com/linux/debian> \\
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli

#user 변경 (jenkins)
USER jenkins

# cli plugin 설치
RUN jenkins-plugin-cli --plugins "blueocean:1.25.2 docker-workflow:1.26"

docker-compose.yml

version: '3.7'

services:
  jenkins:
    build:
      context: . #같은 폴더내에 있는 Dockerfile 실행 
    user: root
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    volumes:
      # 볼륨 경로를 로컬에 지정함.
      - ${JENKINS_HOME}:/var/jenkins_home
      # 로컬의 docker 와, jenkins 내에서 사용할  docker 엔진을 동일한 것을 사용하겠다는 의미임.
      - /var/run/docker.sock:/var/run/docker.sock

여기 docker-compose.yml 파일이 없다면 아래와 간이 명령어를 다 적어야 한다.

docker run -d -p 8080:8080 --name=jenkinscicd \\
-v /사용자경로/jenkins_home:/var/jenkins_home \\
-v /var/run/docker.sock:/var/run/docker.sock \\
jenkins/myjenkins

매번 이런작업을 해야 하거나, 이미지를 삭제후 시작해야 한다면 불편하기때문에 docker-compose.yml 파일을 만들어 관리 한다. docker-compose up -d

# docker image 구동
skan@mezzoui-MacBookPro jenkins % docker-compose up -d

Creating network "jenkins_default" with the default driver
Creating jenkins ... done