Virtualisasi & Container Menengah

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