Cara Setup Multiple Aplikasi Web PHP di Docker Lokal Tanpa Bentrok Port (2026 Guide)

Daftar Isi

 

Daniarsyah - Pernah kesulitan jalankan lebih dari satu aplikasi web PHP di localhost karena port 80 sudah dipakai? Saya juga dulu begitu!

Akhirnya saya bikin struktur folder baru bernama web-apps yang rapi, pisah per project, pakai port berbeda (misal 8001, 8081), dan tetap bisa akses phpMyAdmin masing-masing.

Tutorial ini hasil pengalaman real: dari folder lama xampp-docker (absensi) sampai project baru presensirapat-gtk. Cocok buat developer lokal yang pakai Docker di Linux (Arch/Manjaro dkk).

Alat yang Dibutuhkan

  • Docker & Docker Compose terinstall

  • Folder kerja di /home/user/web-apps

  • Akses terminal

Langkah 1: Buat Struktur Folder Rapi Buat folder utama supaya semua project terorganisir:

mkdir -p ~/web-apps
cd ~/web-apps
mkdir presensirapat-gtk
cd presensirapat-gtk

Ini hasilnya:

  • ~/web-apps/absensi → project lama (rename dari xampp-docker nanti)

  • ~/web-apps/presensirapat-gtk → project baru

Langkah 2: Copy Template Docker dari Project Lama Copy Dockerfile & docker-compose.yml dari project absensi:

cp ~/xampp-docker/Dockerfile .
cp ~/xampp-docker/docker-compose.yml .

Langkah 3: Edit docker-compose.yml (Kunci Utama!) Buka file dengan nano docker-compose.yml, ubah jadi seperti ini (port & nama unik):

version: '3.8'
services:
php:
  build: .
  container_name: php-apache-presensirapat
  ports:
    - "8001:80"  # Port app baru
  volumes:
    - ./htdocs:/var/www/html
  restart: unless-stopped

mariadb:
  image: mariadb:11
  container_name: mariadb-presensirapat
  environment:
    MYSQL_ROOT_PASSWORD: root123
    MYSQL_DATABASE: presensirapat_db
  ports:
    - "3307:3306"
  volumes:
    - mariadb_presensirapat_data:/var/lib/mysql

phpmyadmin:
  image: phpmyadmin:latest
  container_name: phpmyadmin-presensirapat
  environment:
    PMA_HOST: mariadb
    PMA_ARBITRARY: 1  # Penting agar bisa pilih host manual
  ports:
    - "8081:80"
  depends_on:
    - mariadb

Langkah 4: Buat Folder htdocs & Jalankan

mkdir htdocs
docker compose up -d --build

Langkah 5: Akses Hasilnya

Tips Tambahan

  • Kalau error port sudah dipakai → cek sudo netstat -tulnp | grep 8001 lalu stop container lama.

  • Mau tanpa port? Nanti tambah Caddy/Traefik di folder proxy terpisah.

  • Backup rutin: cp -r htdocs htdocs_backup_$(date +%Y%m%d)

Dengan cara ini, kamu bisa jalankan puluhan aplikasi web PHP di satu komputer tanpa bentrok! Struktur web-apps ini scalable, bersih, dan best practice 2026 untuk developer self-hosted.

Sudah coba? Share pengalaman di komentar ya!

Posting Komentar