Press ESC to close

Deploy LEMP Stack Menggunakan Docker Compose

WhatsAppTelegramFacebookXThreadsCopy Link

Apakah Anda ingin menjalankan LEMP Stack (Linux, Nginx, MySQL, PHP) dengan cepat tanpa repot mengatur konfigurasi manual satu per satu? Banyak pengguna pemula merasa kebingungan ketika harus menginstal dan mengelola layanan web seperti Nginx, PHP, dan database secara terpisah. Konfigurasi yang rumit sering kali membuat frustrasi — apalagi jika harus mengatur versi dan dependency antar layanan.

Kabar baiknya, ada solusi modern yang mempermudah semuanya: Docker Compose. Dengan Docker Compose, Anda bisa men-deploy LEMP Stack hanya dengan satu file konfigurasi. Dalam hitungan menit, server web, PHP, dan database bisa berjalan serempak tanpa konflik versi.

Di artikel ini, Anda akan mempelajari:

  • Konsep dasar LEMP Stack dan Docker Compose.
  • Langkah demi langkah membuat file docker-compose.yml.
  • Cara menjalankan dan menguji LEMP Stack.
  • Tips agar deployment berjalan lancar tanpa error.

Apa Itu LEMP Stack dan Docker Compose?

LEMP Stack adalah kombinasi empat komponen utama untuk menjalankan website berbasis PHP:

  • Linux – sistem operasi dasar.
  • Nginx – web server yang cepat dan efisien.
  • MySQL/MariaDB – sistem manajemen database.
  • PHP – bahasa pemrograman sisi server.

Sedangkan Docker Compose adalah alat yang memungkinkan Anda menjalankan beberapa kontainer sekaligus menggunakan satu file konfigurasi. Alih-alih menjalankan docker run berkali-kali, Anda cukup menulis satu file docker-compose.yml untuk mengatur semuanya.

Langkah-Langkah Deploy LEMP Stack Menggunakan Docker Compose

Berikut panduan langkah demi langkah agar Anda bisa langsung mempraktikkannya.


1. Siapkan Folder Proyek

Buat folder baru untuk proyek Anda, misalnya lemp-docker:

mkdir lemp-docker
cd lemp-docker

2. Buat Struktur Direktori

Agar proyek rapi, buat struktur seperti ini:

lemp-docker/

├── docker-compose.yml
├── nginx/
   └── default.conf
└── www/
    └── index.php

Folder www berisi file website Anda, dan folder nginx berisi konfigurasi server Nginx.


3. Buat File docker-compose.yml

Buka file baru bernama docker-compose.yml dan isi dengan konfigurasi berikut:

version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./www:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - db

  php:
    image: php:8.2-fpm
    container_name: php
    volumes:
      - ./www:/var/www/html

  db:
    image: mysql:8.0
    container_name: db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: lemp_db
      MYSQL_USER: user
      MYSQL_PASSWORD: user123
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

File ini mendefinisikan tiga layanan utama:

  • nginx sebagai web server,
  • php-fpm untuk memproses file PHP,
  • mysql sebagai database server.

4. Konfigurasi Nginx

Buat file nginx/default.conf dan isi seperti berikut:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Konfigurasi ini memberi tahu Nginx untuk meneruskan permintaan PHP ke container php-fpm.


5. Buat File index.php

Di dalam folder www, buat file index.php:

<?php
phpinfo();
?>

File ini akan menampilkan informasi PHP di browser, berguna untuk memastikan LEMP Stack berjalan dengan benar.


6. Jalankan Docker Compose

Sekarang Anda siap menjalankan LEMP Stack! Jalankan perintah:

docker compose up -d

Docker akan otomatis:

  • Mengunduh image yang diperlukan.
  • Membuat container untuk Nginx, PHP, dan MySQL.
  • Menghubungkannya satu sama lain melalui jaringan internal.

7. Uji di Browser

Buka browser dan akses:

http://localhost:8080

Jika konfigurasi benar, Anda akan melihat halaman PHP Info muncul — artinya LEMP Stack Anda sudah berjalan sempurna menggunakan Docker Compose! 🎉


Tips Tambahan

  • Untuk menghentikan semua container:
docker compose down
  • Untuk melihat log:
docker compose logs -f
  • Untuk menghapus data database sepenuhnya:
docker volume rm lemp-docker_db_data

Anda telah berhasil membangun LEMP Stack dengan Docker Compose hanya dalam beberapa langkah sederhana. Anda tidak perlu lagi repot menginstal setiap komponen secara manual atau khawatir tentang konflik versi antar layanan.

Selanjutnya, Anda bisa melanjutkan ke panduan berikutnya:
Baca juga: Menghubungkan Aplikasi PHP ke Database MySQL di Docker

WhatsAppTelegramFacebookXThreadsCopy Link