News, Devops, Software, Tutorial

Belajar Docker bagian 9

Eko Susilo Harjo October 2, 2024
docker part 9
docker part 9

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:

  1. Build Docker Image dari source code.
  2. Run Docker Containers untuk pengujian otomatis.
  3. 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:

  1. Membangun Docker Image dari source code.
  2. Menjalankan pengujian di dalam container Docker.
  3. 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:

  1. Build: Membangun Docker Image dari source code.
  2. Test: Menjalankan pengujian otomatis menggunakan container.
  3. 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

  1. Konsistensi: Docker memastikan bahwa aplikasi Anda berjalan dalam environment yang sama di development, testing, dan production.
  2. Efisiensi: Dengan Docker, Anda tidak perlu mengonfigurasi server secara manual, sehingga proses deployment menjadi lebih cepat.
  3. 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.

Pengenalan Go 1.25 baru saja rilis dan bawa banyak peningkatan yang bikin hidup developer lebih gampang. Di artikel ini, kita bakal bahas tiga fitur paling menonjol: DWARF v5 untuk debugging yang lebih ringan, go doc -http yang menyiapkan server dokumentasi lokal dalam hitungan detik, serta interface XOF untuk hash yang output‑nya bisa diperpanjang. Semua dijelaskan dengan […]

News

Change Data Capture (CDC)

Eko Susilo Harjo

28 August 2025

Di era digital, sistem ERP (Enterprise Resource Planning) menjadi tulang punggung perusahaan. Semua proses – mulai dari keuangan, HR, inventori, hingga produksi – bertumpu pada data yang terus berubah setiap detik.Tantangannya: bagaimana cara menampilkan data yang selalu up-to-date tanpa membebani server? Jawabannya ada pada teknologi Change Data Capture (CDC). Apa itu CDC? Change Data Capture […]

Pengantar MLOps (Machine Learning Operations) adalah gabungan praktik DevOps yang diterapkan pada seluruh siklus hidup model AI. Dengan MLOps, tim dapat memindahkan model dari notebook eksperimen ke produksi secara reliable, terukur, dan otomatis. Artikel ini bakal ngasih blueprint praktis untuk developer, data scientist, dan platform engineer yang mau membangun sistem ML produksi. Siklus Hidup MLOps […]

Discover more from teknologi now

Subscribe now to keep reading and get access to the full archive.

Continue reading