Berikut setup Docker khusus WordPress dan Laravel yang siap pakai (level teknis, bisa langsung kamu jalankan). Saya buatkan dua versi terpisah agar lebih jelas dan fleksibel.
1. Setup Docker untuk WordPress
Menggunakan:
- Nginx
- PHP-FPM
- MySQL
Struktur Folder
wordpress-docker/
│
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── src/ (isi WordPress nanti)
│
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── src/ (isi WordPress nanti)
File: docker-compose.yml
version: ‘3.8’
services:
nginx:
image: nginx:latest
ports:
– “8080:80”
volumes:
– ./src:/var/www/html
– ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
– php
– db
php:
image: php:8.2-fpm
volumes:
– ./src:/var/www/html
db:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: secret
ports:
– “3307:3306”
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
– “8081:80”
environment:
PMA_HOST: db
services:
nginx:
image: nginx:latest
ports:
– “8080:80”
volumes:
– ./src:/var/www/html
– ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
– php
– db
php:
image: php:8.2-fpm
volumes:
– ./src:/var/www/html
db:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: secret
ports:
– “3307:3306”
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
– “8081:80”
environment:
PMA_HOST: db
File: nginx/default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Cara Menjalankan
- Download WordPress ke folder
src - Jalankan:
docker-compose up -d
- Akses:
- Website: http://localhost:8080
- phpMyAdmin: http://localhost:8081
2. Setup Docker untuk Laravel
Menggunakan:
- Nginx
- PHP-FPM
- MySQL
- Composer
Struktur Folder
laravel-docker/
│
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── src/ (isi project Laravel)
│
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── src/ (isi project Laravel)
File: docker-compose.yml
version: ‘3.8’
services:
app:
image: php:8.2-fpm
container_name: laravel_app
volumes:
– ./src:/var/www
working_dir: /var/www
nginx:
image: nginx:latest
container_name: laravel_nginx
ports:
– “8000:80”
volumes:
– ./src:/var/www
– ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
– app
db:
image: mysql:8
container_name: laravel_db
restart: always
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_PASSWORD: root
ports:
– “3308:3306”
composer:
image: composer:latest
container_name: laravel_composer
volumes:
– ./src:/var/www
working_dir: /var/www
services:
app:
image: php:8.2-fpm
container_name: laravel_app
volumes:
– ./src:/var/www
working_dir: /var/www
nginx:
image: nginx:latest
container_name: laravel_nginx
ports:
– “8000:80”
volumes:
– ./src:/var/www
– ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
– app
db:
image: mysql:8
container_name: laravel_db
restart: always
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_PASSWORD: root
ports:
– “3308:3306”
composer:
image: composer:latest
container_name: laravel_composer
volumes:
– ./src:/var/www
working_dir: /var/www
File: nginx/default.conf
server {
listen 80;
server_name localhost;
root /var/www/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
listen 80;
server_name localhost;
root /var/www/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Cara Setup Laravel
1. Install Laravel
docker-compose run –rm composer create-project laravel/laravel .
2. Jalankan Container
docker-compose up -d
3. Setting Database (.env)
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
4. Generate Key
docker-compose exec app php artisan key:generate
5. Akses
Perbandingan WordPress vs Laravel di Docker
| Aspek | WordPress | Laravel |
|---|---|---|
| Setup | Lebih cepat | Lebih teknis |
| Struktur | CMS | Framework |
| Cocok untuk | Website cepat | Aplikasi kompleks |
| Docker complexity | Rendah | Menengah |
Tips Pro (Penting)
1. Gunakan Volume dengan Bijak
Agar data tidak hilang:
volumes:
db_data:
db_data:
2. Gunakan .env untuk keamanan
Jangan hardcode password di docker-compose.
3. Gunakan Docker untuk Production
Dengan Docker kamu bisa:
- deploy ke VPS
- scaling
- CI/CD pipeline
Insight Advanced (Level Bisnis / SaaS)
Kombinasi terbaik:
- Dev cepat → Laragon
- Production → Docker
Bahkan kamu bisa:
👉 Auto deploy dari Laragon ke Docker (CI/CD sederhana)