Advertisement

Membuat Aplikasi Multi-Container (Contoh: Aplikasi Web dengan Database)

 File:Docker (container engine) logo.svg


“Jadi, aplikasi web dan database bisa dijalanin sekaligus dalam satu perintah? Ayo, Docker, jangan bercanda!” – Orang yang baru tahu Docker Compose!

Siapa yang bilang aplikasi web dan database harus jalan sendiri-sendiri? Dengan Docker, kamu bisa membuat aplikasi multi-container yang terdiri dari beberapa bagian (misalnya, web server dan database) yang saling berhubungan, cukup dengan satu file dan satu perintah.

Kali ini, kita akan belajar cara membuat aplikasi multi-container menggunakan Docker, dengan contoh aplikasi Node.js yang terhubung ke MySQL. Jadi, siap-siap untuk menghidupkan aplikasi web dan database secara bersamaan!

1. Apa Itu Aplikasi Multi-Container?

 Aplikasi multi-container adalah aplikasi yang melibatkan lebih dari satu container untuk berjalan. Dalam konteks Docker, kamu bisa membagi aplikasi kamu menjadi beberapa layanan (seperti web, database, cache, dll.), yang masing-masing berjalan di container terpisah.

Contoh Sederhana:

  • Web server yang menjalankan aplikasi Node.js.
  • Database yang menyimpan data aplikasi seperti MySQL atau PostgreSQL.
  • Cache seperti Redis (kalau perlu).

Docker memungkinkan kita untuk menyusun aplikasi multi-container ini dalam file konfigurasi yang disebut docker-compose.yml. Dengan file ini, kita bisa mengatur semua container dalam satu tempat, tanpa harus menjalankan satu per satu.

2. Kenapa Docker Sangat Berguna untuk Aplikasi Multi-Container?

 Docker memungkinkan pengelolaan beberapa container dalam satu file. Jadi, daripada harus mengkonfigurasi dan menjalankan masing-masing container secara manual (yang bisa jadi sangat repot), kamu cukup mendefinisikan semuanya dalam satu file dan menjalankannya dengan satu perintah. Praktis dan efisien!

Dengan Docker, kamu bisa:

  • Mengatur jaringan antar container agar bisa berkomunikasi.
  • Membuat volume agar data aplikasi tetap aman meskipun container dihentikan atau dihapus.
  • Menjamin konsistensi lingkungan aplikasi, baik itu di development, testing, atau production.
  • Scaling aplikasi jika dibutuhkan.

3. Langkah-Langkah Membuat Aplikasi Web dengan Database Menggunakan Docker

Langkah 1: Siapkan Aplikasi Node.js

Kita akan membuat aplikasi web sederhana menggunakan Node.js dan menghubungkannya ke MySQL. Buat folder untuk aplikasi kamu, misalnya myapp, dan di dalamnya buat file berikut:

app.js (Aplikasi Web)

const express = require('express');
const mysql = require('mysql');

const app = express();
const port = 3000;

const db = mysql.createConnection({
  host: 'db',
  user: 'root',
  password: 'secret',
  database: 'mydb'
});

db.connect((err) => {
  if (err) throw err;
  console.log('Connected to database!');
});

app.get('/', (req, res) => {
  res.send('Hello, Docker World!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

package.json (Dependency)

Buat file package.json untuk mendefinisikan dependency aplikasi, seperti express dan mysql:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "A simple app with Node.js and MySQL",
  "main": "app.js",
  "dependencies": {
    "express": "^4.17.1",
    "mysql": "^2.18.1"
  },
  "scripts": {
    "start": "node app.js"
  },
  "author": "",
  "license": "ISC"
}

Langkah 2: Siapkan Dockerfile untuk Aplikasi Web

Agar aplikasi Node.js kamu bisa dijalankan dalam container, kita membutuhkan Dockerfile. Buat file Dockerfile di dalam folder yang sama dengan isi berikut:

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Penjelasan:

  • FROM node:14: Menggunakan image resmi Node.js versi 14.
  • WORKDIR /app: Menentukan direktori kerja di dalam container.
  • COPY . .: Menyalin seluruh file aplikasi ke dalam container.
  • EXPOSE 3000: Meng-expose port 3000 agar aplikasi bisa diakses dari luar container.
  • CMD ["npm", "start"]: Perintah untuk menjalankan aplikasi menggunakan npm start.

Langkah 3: Buat file docker-compose.yml

Sekarang, kita akan membuat file docker-compose.yml untuk mendefinisikan dua layanan: web (aplikasi Node.js) dan db (MySQL). Buat file docker-compose.yml di folder yang sama:

version: '3'
services:
  web:
    build: .
    container_name: web-container
    ports:
      - "3000:3000"
    depends_on:
      - db
    networks:
      - app-network

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: mydb
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  db-data:

Penjelasan:

  • web: Mendefinisikan aplikasi web yang dibangun dari Dockerfile yang sudah kita buat.
    • build: .: Menyatakan bahwa Docker harus membangun image dari Dockerfile di direktori yang sama.
    • depends_on: Menjamin bahwa service db (MySQL) dijalankan sebelum web.
  • db: Mendefinisikan database menggunakan image MySQL.
    • environment: Mengatur password root dan database yang akan dibuat.
    • volumes: Menyimpan data database secara persisten.
  • networks: Menyambungkan kedua container dalam satu jaringan bernama app-network agar bisa saling berkomunikasi.

4. Menjalankan Aplikasi Multi-Container dengan Docker Compose

Setelah semua siap, kita tinggal menjalankan aplikasi kita dengan perintah berikut:

docker-compose up --build
  • --build: Digunakan untuk membangun image dari Dockerfile.
  • Docker Compose akan mengunduh image yang diperlukan, membangun image untuk aplikasi web, dan menjalankan container-container yang diperlukan.

Sekarang buka browser kamu dan akses:
http://localhost:3000

Kamu akan melihat pesan “Hello, Docker World!”.

5. Keuntungan Menggunakan Docker untuk Aplikasi Multi-Container

 Kemudahan Pengelolaan:
Docker Compose memungkinkan kamu untuk mengelola aplikasi multi-container dengan mudah. Cukup dengan satu file docker-compose.yml, kamu bisa mendefinisikan dan menjalankan semua layanan dalam aplikasi.

 Isolasi yang Baik:
Setiap layanan (web, database, cache) berjalan dalam container yang terpisah, yang membuat aplikasi lebih mudah dikelola dan lebih aman.

 Konsistensi di Berbagai Environment:
Aplikasi yang kamu jalankan di development, testing, dan production akan memiliki konfigurasi yang konsisten berkat Docker. Tak ada lagi masalah aplikasi yang berjalan beda-beda di setiap environment!

6. Kesimpulan: Docker Itu Bikin Hidup Jadi Mudah!

 Docker membuat aplikasi multi-container jadi super mudah!
  Dengan Docker Compose, kamu bisa mengatur aplikasi yang melibatkan banyak container (seperti web server dan database) dalam satu file dan menjalankannya dengan satu perintah.
  Kamu bisa mengelola aplikasi multi-container dengan efisien, menjaga data tetap aman, dan membuat pengembangan aplikasi jadi lebih cepat dan mudah.

Siap jadi master Docker?
Coba buat aplikasi multi-container kamu sendiri dan lihat betapa mudahnya!

Post a Comment

0 Comments