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.

Polars adalah pustaka open-source untuk pemrosesan data yang ditulis dalam bahasa Rust, yang terkenal dengan efisiensi dan kecepatan. Polars dirancang untuk menangani analisis data secara paralel, memanfaatkan arsitektur modern komputer yang memiliki banyak inti CPU.

“Pelajari konsep Docker persistence dan teknik seperti Docker volumes, bind mounts, dan tmpfs untuk memastikan data tetap aman dan persisten dalam container. Dapatkan panduan lengkap di sini!”

AI dalam dunia fintech telah berkembang pesat, bukan sekadar teknologi baru yang tiba-tiba muncul. Teknologi ini telah lama digunakan untuk membantu pengambilan keputusan keuangan dan mendeteksi penipuan. Kini, AI dan subdomainnya, yaitu Machine Learning (ML), memberikan nilai tambah signifikan dalam berbagai aspek industri fintech. Apa saja manfaat utama teknologi ini bagi sektor keuangan dan perbankan? […]

Discover more from teknologi now

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

Continue reading