Cara Install WordPress Menggunakan Docker Compose Terbaru dengan FrankenPHP dan Caddy

Jika Anda ingin menginstal WordPress secara modern dan efisien menggunakan Docker, FrankenPHP dan Caddy adalah kombinasi powerful yang menawarkan kecepatan dan kemudahan konfigurasi SSL otomatis. Artikel ini akan membahas langkah-langkah nya :
- Mengunduh file WordPress tanpa database.
- Membersihkan image default.
- Menjalankan WordPress menggunakan Docker Compose terbaru (tanpa
version:
). - Menggunakan FrankenPHP sebagai server PHP dan Caddy sebagai web server.
๐งฑ Struktur Folder WordPress Docker
Sebelum memulai, pastikan Anda memiliki struktur folder sebagai berikut:
project-root/
โโโ docker-compose.yml โ Konfigurasi utama FrankenPHP + Caddy
โโโ Dockerfile โ Build image WordPress + FrankenPHP
โโโ Caddyfile โ Konfigurasi web server Caddy
โโโ wordpress/ โ File WordPress dari image resmi
โ Langkah 1: Download File WordPress ke Volume Host
Langkah pertama adalah mengunduh file WordPress dari image resmi dan menyimpannya di direktori ./wordpress
.
๐ File docker-compose.download.yml
services:
wordpress:
image: wordpress:latest
container_name: wordpress-downloader
volumes:
- ./wordpress:/var/www/html
โถ๏ธ Jalankan Perintah
docker compose -f docker-compose.download.yml up
Tunggu hingga file WordPress muncul di folder ./wordpress
.
๐งน Langkah 2: Bersihkan Image dan Container
Setelah file berhasil diunduh:
docker compose -f docker-compose.download.yml down -v
docker rmi wordpress:latest
Ini akan menghapus container sementara dan image wordpress:latest
, agar tidak konflik dengan build FrankenPHP berikutnya.
โ๏ธ Langkah 3: Konfigurasi Docker Compose WordPress dengan FrankenPHP + Caddy
๐ File docker-compose.yml
services:
php:
container_name: wordpress-frankenphp-php
build: .
image: example.com:latest
restart: always
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- caddy_data:/data
- caddy_config:/config
environment:
SERVER_NAME: example.com www.example.com
depends_on:
- db
db:
container_name: wordpress-frankenphp-db
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: dummyuser
MYSQL_PASSWORD: dummypass123
MYSQL_ROOT_PASSWORD: dummypass123
volumes:
- db_data:/var/lib/mysql
volumes:
caddy_data:
caddy_config:
db_data:
๐ณ File Dockerfile
FROM dunglas/frankenphp
ENV SERVER_NAME="example.com www.example.com"
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN echo "upload_max_filesize = 512M" >> "$PHP_INI_DIR/php.ini" && \
echo "post_max_size = 512M" >> "$PHP_INI_DIR/php.ini" && \
echo "memory_limit = 512M" >> "$PHP_INI_DIR/php.ini" && \
echo "max_execution_time = 300" >> "$PHP_INI_DIR/php.ini" && \
echo "max_input_time = 300" >> "$PHP_INI_DIR/php.ini"
COPY ./wordpress /app/public
COPY ./Caddyfile /etc/caddy/Caddyfile
๐ File Caddyfile
example.com {
redir https://www.example.com{uri} permanent
}
www.example.com {
root * /app/public
php_fastcgi localhost:9000
encode gzip
file_server
}
โ๏ธ Langkah 4: Sesuaikan File wp-config.php
Masuk ke direktori ./wordpress
dan salin file konfigurasi:
cp wp-config-sample.php wp-config.php
Lalu ubah baris-baris berikut di wp-config.php
:
define( 'DB_NAME', 'wordpress_db' );
define( 'DB_USER', 'dummyuser' );
define( 'DB_PASSWORD', 'dummypass123' );
// Penting: Host diarahkan ke nama service container database
define( 'DB_HOST', 'wordpress-frankenphp-db' );
Pastikan DB_HOST
sesuai dengan nama service db
di docker-compose.yml
, yaitu wordpress-frankenphp-db
.
๐ Langkah 5: Jalankan WordPress dengan Docker Compose
Setelah semua file siap, jalankan perintah berikut:
docker compose up --build -d
WordPress sekarang berjalan di http://example.com
dan secara otomatis akan menggunakan HTTPS jika domain Anda telah mengarah ke IP server Anda.
๐ Opsional: Hapus Container & Image
Untuk menghentikan dan membersihkan:
docker compose down -v
docker rmi example.com:latest
๐ Keunggulan Menggunakan FrankenPHP + Caddy
- โ SSL Otomatis dengan Let’s Encrypt
- โ
Konfigurasi ringan tanpa file
.htaccess
- โ Kinerja tinggi dengan PHP built-in server
- โ Pengelolaan modern menggunakan Docker Compose terbaru (tanpa versi)
๐ฏ Kesimpulan
Dengan mengikuti panduan ini, Anda telah berhasil:
- Mengunduh file WordPress tanpa database.
- Menghapus image default
wordpress:latest
. - Membuat environment WordPress yang lebih modern dan cepat menggunakan FrankenPHP dan Caddy.
Setup ini cocok untuk pengembangan, staging, maupun deployment produksi (dengan tambahan keamanan & backup).
๐ Rekomendasi Tambahan
Jika Anda merasa tutorial ini bermanfaat, silakan bookmark atau bagikan ke tim Anda! Ingin artikel serupa untuk Laravel, Next.js, atau Ghost blog? Tinggal request saja di kolom komentar.