
Daftar Isi
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-docker2. Buat Struktur Direktori
Agar proyek rapi, buat struktur seperti ini:
lemp-docker/
│
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── www/
└── index.phpFolder 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 -dDocker 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:8080Jika 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_dataAnda 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
