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단계: 초기 비밀번호 확인 및 접속

컨테이너가 완전히 실행된 후, 초기 설정을 위해 관리자 비밀번호를 확인합니다.
3.1. 초기 비밀번호 확인
컨테이너의 로그를 확인하여 초기 비밀번호를 찾습니다.
Bash
docker logs jenkins | grep 'initialAdminPassword'
# 또는 다음 명령어로 파일 내용 직접 확인
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
3.2. Jenkins 접속
웹 브라우저에서 **http://호스트IP:8080**으로 접속합니다.
- 확인된 비밀번호를 입력하고 잠금을 해제합니다.
- Install suggested plugins를 선택하여 권장 플러그인을 설치합니다.
- 관리자 계정을 생성하고 설정을 완료합니다.