Setup Stack Web dengan Docker Compose (Nginx + PHP + MySQL)
Membangun environment pengembangan web lengkap dengan sekali perintah.
Docker Compose memungkinkan beberapa container (Nginx, PHP-FPM, MySQL) dikelola lewat satu file konfigurasi YAML.
Struktur Proyek
proyek-ku/
├── docker-compose.yml
├── nginx/
│ └── default.conf
├── php/
│ └── Dockerfile
└── app/
└── index.php
File docker-compose.yml
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./app:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
php:
build: ./php
volumes:
- ./app:/var/www/html
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: aplikasi
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Konfigurasi Nginx
server {
listen 80;
root /var/www/html;
index index.php;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Menjalankan
docker compose up -d --build
Buka http://IP_SERVER:8080 dari browser. Kode PHP cukup diletakkan di folder app/, perubahan langsung terlihat tanpa rebuild.
Perintah Berguna
docker compose ps # status service
docker compose logs -f php # ikuti log PHP
docker compose down # hentikan semua container