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.

  Cara Optimasi GPT-3 OpenAI untuk Konten Berkualitas GPT-3 OpenAI sudah menjadi senjata andalan creator konten modern. Namun, tanpa optimasi yang tepat, hasilnya bisa jauh dari harapan. Artikel ini menuntunmu mengekstrak potensi penuh GPT-3 agar setiap prompt menghasilkan konten berkualitas tinggi. Apa itu GPT-3 dan Kenapa Perlu Dioptimasi?GPT-3 adalah model bahasa canggih buatan OpenAI yang […]

Model Context Protocol (MCP) kini menjadi standar baru dalam mengintegrasikan Large Language Models (LLM) ke dalam aplikasi. Tutorial ini menjelaskan langkah-langkah implementasi MCP dalam pengembangan aplikasi modern agar Anda bisa mulai menggunakan protokol ini hari ini. Apa Itu MCP dan Manfaatnya MCP adalah protokol terbuka yang memungkinkan aplikasi berkomunikasi dengan LLM menggunakan format JSON-RPC 2.0. […]

Dalam era digital dan kerja hybrid, AI personal assistant bukan lagi sekadar tren, melainkan alat strategis untuk otomatisasi tugas, penghematan waktu, dan fokus pada pekerjaan bernilai tinggi. Artikel ini membahas lebih dari sekadar memilih asisten AI: kita akan bedah strategi nyata, tools yang bisa Anda pakai, serta bagaimana AI bisa diintegrasikan ke sistem kerja Anda […]

Discover more from teknologi now

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

Continue reading