Belajar Docker bagian 9
Eko Susilo Harjo October 2, 2024

Dalam era modern DevOps, Continuous Integration (CI) dan Continuous Deployment (CD) menjadi bagian penting dari siklus pengembangan perangkat lunak. Salah satu alat yang semakin populer dalam proses ini adalah Docker. Dengan Docker, kita bisa membuat lingkungan yang konsisten dari development hingga production, serta mengotomatisasi banyak proses, termasuk pembuatan image dan deployment aplikasi.
Artikel ini akan membahas bagaimana cara mengintegrasikan Docker ke dalam CI/CD pipeline, serta beberapa contoh praktis menggunakan Jenkins dan GitLab CI.
Docker di CI/CD: Langkah Awal
Continuous Integration (CI) adalah praktik yang mendorong pengembang untuk menggabungkan perubahan kode mereka ke repositori secara berkala. Di sisi lain, Continuous Deployment (CD) adalah proses otomatisasi dari pengujian hingga release aplikasi ke production.
Dalam konteks CI/CD, Docker digunakan untuk:
- Menjalankan pengujian di environment yang konsisten.
- Membuat dan menyimpan image aplikasi.
- Memfasilitasi deployment yang cepat dan mudah.
Langkah awal dalam integrasi Docker ke pipeline CI/CD adalah memastikan bahwa pipeline Anda memiliki akses ke Docker Engine, sehingga Anda bisa:
- Build Docker Image dari source code.
- Run Docker Containers untuk pengujian otomatis.
- Push Docker Image ke registry untuk digunakan di production.
Mengintegrasikan Docker dalam Jenkins
Jenkins adalah salah satu alat CI/CD yang paling populer, dan integrasi Docker dalam Jenkins memungkinkan pipeline Anda lebih fleksibel dan efisien.
1. Install Plugin Docker di Jenkins
Langkah pertama adalah memasang Docker Plugin di Jenkins. Caranya:
- Masuk ke Jenkins.
- Pilih Manage Jenkins > Manage Plugins.
- Cari dan pasang Docker Plugin.
2. Konfigurasi Pipeline dengan Docker
Setelah plugin terpasang, Anda bisa membuat pipeline yang menggunakan Docker untuk build dan testing. Berikut adalah contoh Jenkinsfile untuk mengotomatisasi build image Docker:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
docker.build('nama_aplikasi:latest')
}
}
}
stage('Test') {
steps {
script {
docker.image('nama_aplikasi:latest').inside {
sh 'npm test'
}
}
}
}
stage('Push') {
steps {
script {
docker.withRegistry('https://index.docker.io/v1/', 'docker-credentials') {
docker.image('nama_aplikasi:latest').push('latest')
}
}
}
}
}
}
3. Build dan Push Docker Image
Pipeline ini akan:
- Membangun Docker Image dari source code.
- Menjalankan pengujian di dalam container Docker.
- Push Image ke Docker Hub atau registry yang Anda gunakan.
Mengintegrasikan Docker dalam GitLab CI
GitLab CI juga mendukung integrasi Docker secara penuh. Pipeline GitLab CI memungkinkan Anda membangun, menguji, dan mendorong Docker Image secara otomatis.
1. Konfigurasi File .gitlab-ci.yml
File .gitlab-ci.yml
di GitLab digunakan untuk mendefinisikan pipeline. Berikut contoh sederhana untuk integrasi Docker di GitLab CI:
stages:
- build
- test
- push
variables:
DOCKER_IMAGE: "nama_aplikasi"
build:
stage: build
script:
- docker build -t $DOCKER_IMAGE:latest .
test:
stage: test
script:
- docker run $DOCKER_IMAGE:latest npm test
push:
stage: push
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker tag $DOCKER_IMAGE:latest $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHA
- docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHA
2. Stages dalam GitLab CI
Pipeline di atas memiliki beberapa stages:
- Build: Membangun Docker Image dari source code.
- Test: Menjalankan pengujian otomatis menggunakan container.
- Push: Mendorong image ke registry GitLab Container atau Docker Hub.
Membuat Image Otomatis dan Deployment dengan Docker
Dengan pipeline CI/CD yang sudah terintegrasi Docker, Anda bisa secara otomatis membangun image setiap kali ada perubahan pada kode sumber, melakukan pengujian, dan mendorongnya ke registry.
Manfaat Utama
- Konsistensi: Docker memastikan bahwa aplikasi Anda berjalan dalam environment yang sama di development, testing, dan production.
- Efisiensi: Dengan Docker, Anda tidak perlu mengonfigurasi server secara manual, sehingga proses deployment menjadi lebih cepat.
- Isolasi: Docker menjalankan aplikasi dalam container yang terisolasi, mengurangi risiko bentrokan dependency antar aplikasi.
Contoh: Otomatisasi Deployment dengan Docker Swarm
Setelah image didorong ke registry, Anda bisa menggunakan Docker Swarm atau Kubernetes untuk melakukan deployment otomatis. Misalnya, untuk Docker Swarm, perintah berikut bisa digunakan untuk memperbarui aplikasi di production:
docker service update --image nama_aplikasi:latest nama_service
Kesimpulan
Mengintegrasikan Docker ke dalam CI/CD pipeline memungkinkan proses build, testing, dan deployment menjadi lebih cepat, konsisten, dan efisien. Baik menggunakan Jenkins maupun GitLab CI, Anda dapat membangun pipeline otomatis yang memanfaatkan Docker untuk menghasilkan image dan mendistribusikan aplikasi ke production dengan mudah.
Docker bukan hanya membuat pengembangan lebih cepat, tapi juga memberikan fleksibilitas untuk menjalankan aplikasi dalam berbagai environment tanpa repot melakukan konfigurasi ulang.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.