Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Cara Deploy WordPress di Kubernetes Lengkap dengan SSL Let’s Encrypt
  • Panduan Lengkap Install MetalLB di Kubernetes (VPS/Bare Metal) dengan IP Publik
  • Panduan Lengkap Deploy Ingress NGINX dan Cert-Manager Kubernetes dengan HTTPS Otomatis (Let’s Encrypt)
  • Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  • Monitoring Docker Container dengan CAdvisor, Node Exporter, Prometheus, dan Grafana

Recent Comments

  1. Masdika.BIZ.ID on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  2. wwqqs on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  3. Rio Ardiansyah on Panduan Lengkap Redis Docker untuk WordPress
  4. Masdika.BIZ.ID on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI
  5. fafiki on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI

Archives

  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

Cara Install WordPress Menggunakan Docker Compose Terbaru dengan FrankenPHP dan Caddy

June 11, 2025 Tutorial by Masdika.BIZ.ID
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

  • Membangun Website WordPress Modern dengan Docker, FrankenPHP, dan Caddy

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.

Share:
Tags: caddyfiledockerfrankenphp

Post navigation

Prev
Next
Write a comment Cancel Reply

ยฉ 2025 www.masdika.biz.id โ€” Semua Hak Dilindungi