Mengenal Docker Dasar untuk Deployment Aplikasi Backend

## Introduction Dalam pengembangan aplikasi backend, satu tantangan umum adalah memastikan bahwa aplikasi berjalan sama di lingkungan pengembangan, st...

Mengenal Docker Dasar untuk Deployment Aplikasi Backend

Introduction

Dalam pengembangan aplikasi backend, satu tantangan umum adalah memastikan bahwa aplikasi berjalan sama di lingkungan pengembangan, staging, dan produksi. Perbedaan versi library, konfigurasi sistem, atau dependensi dapat menyebabkan bug yang sulit direproduksi. Docker menyediakan solusi dengan membungkus aplikasi dan semua dependensinya ke dalam suatu container yang terisolasi, sehingga menghasilkan lingkungan yang konsisten di mana pun container dijalankan.

Pembahasan

Apa Itu Docker?

Docker adalah platform open-source yang memungkinkan developer membuat, mengirimkan, dan menjalankan aplikasi dalam kontainer. Kontainer adalah unit yang ringan dan portabel yang berisi kode aplikasi, runtime, library, dan setting yang diperlukan untuk menjalankan aplikasi tersebut.

Konsep Dasar

KomponenPenjelasan
ImageTemplate hanya-baca yang digunakan untuk membuat kontainer. Image berisi sistem operasi minimal, dependensi, dan kode aplikasi.
ContainerInstance yang dapat dijalankan dari sebuah image. Container berjalan terisolasi dari host tetapi berbagi kernel OS host.
DockerfileSkrip teks yang berisi instrusi langkah demi langkah untuk membangun sebuah image.
Docker HubRegistry publik tempat kita dapat menyimpan dan mendistribusikan image Docker.

Mengapa Docker Berguna untuk Backend?

  • Konsistensi Lingkungan: Sama sekali tidak ada "works on my machine" lagi karena image yang sama digunakan di semua tahap.
  • Skalabilitas: Dengan container orchestration seperti Kubernetes atau Docker Swarm, kita dapat menyalin kontainer dengan mudah untuk menangani lalu lintas yang meningkat.
  • Isolasi: Setiap layanan (misalnya API, database, worker) dapat berjalan dalam kontainer terpisah, sehingga tidak saling mengganggu.
  • Efisiensi Resource: Kontainer lebih ringan daripada virtual machine karena tidak memerlukan OS tambahan per instance.

Contoh (jika ada)

Berikut contoh sederhana Dockerfile untuk aplikasi backend berbasis Node.js yang menampilkan pesan “Hello, World!” saat diakses melalui HTTP.

dockerfile
# 1. Gunakan image Node.js resmi sebagai base
FROM node:18-alpine

# 2. Set working directory di dalam container
WORKDIR /app

# 3. Salin file package.json dan package-lock.json (jika ada)
COPY package*.json ./

# 4. Install dependensi
RUN npm ci --only=production

# 5. Salin seluruh kode aplikasi
COPY . .

# 6. Expose port yang akan digunakan oleh aplikasi (misal 3000)
EXPOSE 3000

# 7. Perintah yang dijalankan ketika container mulai
CMD ["node", "server.js"]

file server.js (letakkan di samma folder dengan Dockerfile)

javascript
const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Langkah-langkah untukBuild dan Jalankan

  1. Build image
    bash
    docker build -t hello-node .
    
  2. Jalankan container
    bash
    docker run -p 3000:3000 --name hello-container hello-node
    
  3. Buka browser atau gunakan
    code
    curl
    :
    bash
    curl http://localhost:3000
    
    Output yang diharapkan:
    code
    Hello, World!

Kesimpulan

Docker adalah alat yang sangat berguna untuk mempermudah deployment dan pengelolaan aplikasi backend, terutama bagi pemula yang ingin memastikan aplikasi berjalan konsisten di berbagai lingkungan. Dengan memahami konsep image, container, dan Dockerfile, kita dapat mulai membungkus aplikasi kita ke dalam kontainer yang ringan, portabel, dan mudah diskalakan. Untuk langkah selanjutnya, pelajari Docker Compose untuk multi‑container aplikasi dan eksplorasi orchestration seperti Kubernetes untuk produksi skala besar.

*This blog is generated by n8n*

Back to Blog