Tutorial Lengkap Install Jenkins di Docker dengan YAML Docker Compose

Jenkins adalah automation server populer yang banyak digunakan untuk CI/CD pipeline. Dalam artikel ini, kamu akan belajar cara instalasi Jenkins menggunakan Docker dan file YAML docker-compose.yml
. Tutorial ini cocok untuk pemula maupun DevOps Engineer yang ingin setup Jenkins dengan cepat dan terstruktur.
๐งฐ Persyaratan
Sebelum memulai, pastikan kamu sudah:
โ Menginstall Docker & Docker Compose di sistem operasi kamu (Windows, Linux, atau macOS)
โ Memiliki akses terminal/command prompt dengan hak admin
๐ Struktur Direktori
Buat folder project untuk Jenkins:
mkdir jenkins-docker && cd jenkins-docker
Buat 2 file berikut:
docker-compose.yml
Dockerfile
๐ File Dockerfile
File ini akan meng-custom image Jenkins agar bisa menjalankan Docker dari dalam container (Docker-in-Docker).
FROM jenkins/jenkins:2.504.2-jdk21
USER root
RUN apt-get update && apt-get install -y \
lsb-release \
curl \
gnupg
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
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
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
๐งพ File docker-compose.yml
Berikut file YAML untuk menjalankan Jenkins dan Docker DinD (Docker-in-Docker):
services:
jenkins-docker:
image: docker:dind
privileged: true
container_name: jenkins-docker
environment:
- DOCKER_TLS_CERTDIR=/certs
networks:
- jenkins
volumes:
- jenkins-docker-certs:/certs/client
- jenkins-data:/var/jenkins_home
ports:
- "2376:2376"
jenkins-blueocean:
build: .
container_name: jenkins-blueocean
restart: on-failure
environment:
- DOCKER_HOST=tcp://jenkins-docker:2376
- DOCKER_CERT_PATH=/certs/client
- DOCKER_TLS_VERIFY=1
networks:
- jenkins
ports:
- "8080:8080"
- "50000:50000"
volumes:
- jenkins-data:/var/jenkins_home
- jenkins-docker-certs:/certs/client:ro
networks:
jenkins:
volumes:
jenkins-data:
jenkins-docker-certs:
โถ๏ธ Menjalankan Jenkins
Setelah kedua file di atas dibuat, jalankan perintah berikut:
docker compose up -d --build
Cek log awal Jenkins untuk mendapatkan password admin:
docker logs jenkins-blueocean
Cari bagian seperti ini:
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
abc123def456gh...
*************************************************************
๐ Akses Jenkins
Buka browser dan akses:
http://localhost:8080
Masukkan initial admin password dan lanjutkan proses setup wizard:
- ๐ Unlock Jenkins dengan password dari log
- ๐ Install Suggested Plugins atau pilih sendiri
- ๐ค Buat Admin User
- โ Selesai! Klik Start using Jenkins
๐ฆ Tambahan untuk Pengguna Windows (Docker Manual Tanpa Compose)
Jika kamu pengguna Windows, pastikan Docker Desktop kamu berada di mode Linux container. Kemudian jalankan langkah-langkah berikut:
๐ง Buat Network Docker
docker network create jenkins
๐ณ Jalankan Docker DinD
docker run --name jenkins-docker --rm --detach ^
--privileged --network jenkins --network-alias docker ^
--env DOCKER_TLS_CERTDIR=/certs ^
--volume jenkins-docker-certs:/certs/client ^
--volume jenkins-data:/var/jenkins_home ^
--publish 2376:2376 docker:dind
๐งฑ Build Custom Jenkins Image
docker build -t myjenkins-blueocean:2.504.2-1 .
๐ Jalankan Jenkins dari Image Tersebut
docker run --name jenkins-blueocean --restart=on-failure --detach ^
--network jenkins --env DOCKER_HOST=tcp://docker:2376 ^
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 ^
--volume jenkins-data:/var/jenkins_home ^
--volume jenkins-docker-certs:/certs/client:ro ^
--publish 8080:8080 --publish 50000:50000 myjenkins-blueocean:2.504.2-1
๐ Dapatkan Password Awal
docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword
๐งน Stop & Hapus
Untuk menghentikan Jenkins:
docker compose down
Untuk menghapus data:
docker volume rm jenkins-data jenkins-docker-certs
โ Kesimpulan
Dengan docker-compose.yml
, proses setup Jenkins menjadi lebih rapi, terautomasi, dan portable. Cocok untuk development environment maupun CI/CD pipeline kecil. Pengguna Windows pun bisa mengikuti metode ini dengan penyesuaian Docker Linux Container.
Semoga bermanfaat! ๐โจ