Docker Compose를 사용하여 젠킨스를 셀프 호스팅하는 방법

Docker Compose를 사용하여 젠킨스를 셀프 호스팅하는 방법을 설명해 드릴게요. 🐳 이 방식은 설정 관리가 더 쉽고, 서비스 정의가 명확해지는 장점이 있습니다.

앞서 설명드렸던 DooD (Docker Outside of Docker) 방식을 docker-compose.yml 파일로 구현합니다.


 

📝 1단계: docker-compose.yml 파일 작성

 

다음 내용을 포함하는 docker-compose.yml 파일을 프로젝트 디렉토리에 생성하세요.

YAML

version: '3.8'

services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins:lts
    user: root # Docker 명령 실행을 위해 root 권한 부여
    restart: always
    environment:
      - TZ=Asia/Seoul
    ports:
      - "8080:8080" # 웹 인터페이스
      - "50000:50000" # Jenkins Agent 통신
    volumes:
      - jenkins_home:/var/jenkins_home # 영구 데이터 볼륨 마운트
      - /var/run/docker.sock:/var/run/docker.sock # DooD: 호스트 Docker 접근 허용

volumes:
  jenkins_home:
    name: jenkins_home

 

파일 설명:

 

  • version: '3.8': 사용할 Docker Compose 파일 버전입니다.
  • services: jenkins:: 젠킨스 서비스 정의입니다.
  • image: jenkins/jenkins:lts: Jenkins 공식 LTS 이미지를 사용합니다.
  • user: root: 컨테이너 내부에서 Docker 명령을 실행하고 호스트 소켓에 접근하기 위해 root로 실행합니다.
  • ports: 젠킨스 웹 UI(8080) 및 에이전트 통신 포트(50000)를 호스트에 노출합니다.
  • volumes:
    • jenkins_home:/var/jenkins_home: 젠킨스 설정, 플러그인, 빌드 데이터 등을 영구적으로 저장하기 위한 볼륨입니다.
    • /var/run/docker.sock:/var/run/docker.sock: 가장 중요한 설정으로, 젠킨스 컨테이너가 호스트 머신의 Docker 데몬을 사용할 수 있게 합니다 (DooD).

 

💻 2단계: Jenkins 컨테이너 실행

 

docker-compose.yml 파일이 있는 디렉토리에서 다음 명령어를 실행하여 젠킨스를 시작합니다.

Bash

docker-compose up -d
  • up: 서비스 컨테이너를 생성하고 시작합니다.
  • -d: 백그라운드(detached mode)에서 실행합니다.

 

🔑 3단계: 초기 비밀번호 확인 및 접속

Docker Compose를 사용하여 젠킨스를 셀프 호스팅하는 방법

컨테이너가 완전히 실행된 후, 초기 설정을 위해 관리자 비밀번호를 확인합니다.

 

3.1. 초기 비밀번호 확인

 

컨테이너의 로그를 확인하여 초기 비밀번호를 찾습니다.

Bash

docker logs jenkins | grep 'initialAdminPassword'
# 또는 다음 명령어로 파일 내용 직접 확인
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

 

3.2. Jenkins 접속

 

웹 브라우저에서 **http://호스트IP:8080**으로 접속합니다.

  1. 확인된 비밀번호를 입력하고 잠금을 해제합니다.
  2. Install suggested plugins를 선택하여 권장 플러그인을 설치합니다.
  3. 관리자 계정을 생성하고 설정을 완료합니다.