Jakhoster.blog

Edukasi 26 May 2026

Menerapkan Fungsi Docker dengan Otomasi CI/CD untuk Menghadapi Lonjakan Traffic di Server Produksi

Menerapkan Fungsi Docker dengan Otomasi CI/CD untuk Menghadapi Lonjakan Traffic di Server Produksi
Advertisement

Menangani Lonjakan Traffic dengan Docker

Dalam dunia digital saat ini, organisasi sering kali menghadapi tantangan dalam mengelola beban server yang tinggi. Misalnya, saat peluncuran produk baru atau kampanye pemasaran, traffic bisa melonjak secara signifikan. Pada saat-saat seperti ini, arsitektur aplikasi yang baik menjadi sangat penting. Docker hadir sebagai solusi yang memungkinkan kita untuk mengisolasi aplikasi dan menjalankannya di dalam kontainer.

Memahami Fungsi Docker dalam Lingkungan Produksi

Fungsi Docker tidak hanya tentang pengemasan aplikasi; ini juga tentang memastikan aplikasi dapat dengan mudah diterapkan dan diskalakan sesuai kebutuhan. Dengan mengandalkan kontainer, kita dapat menggunakan Docker Compose untuk mendefinisikan dan menjalankan aplikasi multi-kontainer. Mari kita telaah langkah demi langkah penggunaan Docker dalam skenario CI/CD yang efektif.

Persyaratan Awal

Sebelum melanjutkan, pastikan Anda memiliki:

Advertisement
  • Server Linux (Ubuntu/Debian/Rocky Linux) dengan Docker dan Docker Compose terinstal.
  • Akses ke repository CI/CD (seperti GitHub Actions, GitLab CI, atau Jenkins).
  • Pemahaman dasar tentang kontainer, image, dan konsep jaringan di Docker.

Memastikan bahwa Anda memenuhi persyaratan awal ini merupakan langkah krusial yang sejalan dengan prinsip dasar dalam Panduan Lengkap Docker: Teori, Arsitektur, Cara Kerja, dan Manajemen Kontainer untuk Sysadmin.

Memastikan Anda memenuhi persyaratan awal ini adalah langkah penting yang sejalan dengan pemahaman yang lebih mendalam dalam Panduan Lengkap Docker: Teori, Arsitektur, Cara Kerja, dan Manajemen Kontainer untuk Sysadmin.

Instalasi Docker dan Docker Compose

Jika Docker belum terinstal, gunakan perintah berikut untuk menginstalnya:

sudo apt update && sudo apt install -y docker.io docker-compose

Perintah ini akan memperbarui daftar paket dan menginstal Docker serta Docker Compose. Pastikan Anda juga menambahkan pengguna saat ini ke grup docker untuk menghindari penggunaan sudo setiap kali menjalankan perintah Docker:

sudo usermod -aG docker $USER

Jangan lupa untuk log out dan log in kembali agar perubahan grup ini berlaku.

Membuat Dockerfile untuk Aplikasi

Sekarang, kita akan membuat Dockerfile untuk aplikasi web sederhana. Misalnya, kita ingin mendepoloy aplikasi Node.js:

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000
CMD [ 'node', 'server.js' ]
  • FROM node:14 memilih image dasar yang berisi Node.js versi 14.
  • WORKDIR /usr/src/app mengatur direktori kerja dalam kontainer.
  • COPY package*.json ./ menyalin file package.json dan package-lock.json ke dalam kontainer.
  • RUN npm install menjalankan perintah untuk menginstal dependensi.
  • COPY . . menyalin seluruh kode aplikasi ke dalam kontainer.
  • EXPOSE 3000 mengindikasikan bahwa kontainer akan mendengarkan pada port 3000.
  • CMD [ 'node', 'server.js' ] mendefinisikan perintah yang akan dijalankan ketika kontainer dimulai.

Mendefinisikan Layanan dengan Docker Compose

Dengan menggunakan Docker Compose, kita bisa mendefinisikan konfigurasi beberapa layanan sekaligus.

version: '3'
services:
  web:
    build: .
    ports:
      - '3000:3000'
    networks:
      - app-network
  db:
    image: mongo
    ports:
      - '27017:27017'
    networks:
      - app-network

networks:
  app-network:

Dalam file ini:

  • version: '3' menyatakan versi Docker Compose yang digunakan.
  • Di bawah services:, kita mendefinisikan layanan web untuk aplikasi Node.js dan db untuk MongoDB, dengan konfigurasi port dan jaringan yang tepat.

Untuk membangun dan menjalankan layanan, cukup jalankan:

docker-compose up --build

Integrasi dengan CI/CD

Setelah aplikasi berjalan di lokal, langkah selanjutnya adalah mengintegrasikannya dengan pipeline CI/CD.

name: CI

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Build and push Docker image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: username/repo:latest

      - name: Deploy to server
        run: |
          ssh user@server 'docker pull username/repo:latest && docker-compose up -d'

Dalam skrip ini:

  • Pipeline ini akan berjalan setiap kali ada push ke cabang main.
  • Langkah-langkah berikutnya adalah menarik kode, mengonfigurasi Docker Buildx, membangun image, dan mendorongnya ke Docker Hub.
  • Terakhir, melakukan ssh untuk menarik image terbaru di server dan memperbarui kontainer yang berjalan.

Optimasi dan Penskalaan Kontainer

Setelah kontainer berjalan, saatnya untuk memikirkan tentang optimasi dan penskalaan. Gunakan Docker Swarm untuk mengelola cluster kontainer Anda:

docker swarm init

Perintah ini mengubah node Anda menjadi manajer swarm. Anda dapat menambahkan noda lain ke dalam swarm untuk mengelola beban dengan lebih baik.

Selanjutnya, gunakan service scaling untuk menambah atau mengurangi jumlah replika:

docker service scale web=5

Perintah ini akan meningkatkan jumlah replika dari layanan web menjadi 5, memungkinkan aplikasi Anda menangani lebih banyak traffic.

Common Mistakes dan Troubleshooting

Banyak orang mengalami masalah ketika mengonfigurasi Docker dan Docker Compose.

  • Port Conflict: Pastikan port yang Anda gunakan tidak bentrok dengan layanan lain pada server. Gunakan docker ps untuk memeriksa kontainer yang berjalan.
  • Volume Persistence: Untuk menghindari kehilangan data, gunakan volumes dalam docker-compose.yml untuk menyimpan database secara permanen.
  • Jaringan Kontainer: Pastikan kontainer dapat saling berkomunikasi jika mereka berada di jaringan yang berbeda. Gunakan docker network ls untuk melihat jaringan yang ada dan docker network inspect untuk detail lebih lanjut.

Monitoring dan Keamanan Kontainer

Penting untuk memantau kinerja kontainer Anda. Gunakan alat seperti Prometheus dan Grafana untuk memantau metrik kinerja aplikasi Anda:

  • Instal Prometheus dalam satu kontainer dan konfigurasikan untuk mengumpulkan metrik dari kontainer lain.
  • Gunakan Grafana untuk membuat dasbor yang menampilkan metrik tersebut.

Untuk meningkatkan keamanan, pertimbangkan hal-hal berikut:

  • Gunakan Docker Bench for Security untuk memeriksa dengan cepat best practices dalam keamanan kontainer.
  • Hindari menjalankan kontainer sebagai root dan selalu tentukan USER dalam Dockerfile.

Kesimpulan

Dengan menggunakan Docker dalam arsitektur aplikasi Anda, ditambah integrasi CI/CD yang baik, Anda dapat dengan mudah menangani lonjakan traffic tanpa downtime. Pastikan untuk selalu memantau dan mengoptimalkan aplikasi Anda untuk memberikan pengalaman terbaik bagi pengguna.

Rekomendasi Sponsor