MinIO installation guide on Ubuntu

Jika kamu ingin menginstal WordPress dengan cara modern dan efisien menggunakan Docker, kombinasi FrankenPHP dan Caddy adalah pilihan yang sangat powerful. Kombinasi ini menawarkan kecepatan tinggi serta kemudahan konfigurasi SSL otomatis. Artikel ini akan memandu kamu langkah demi langkah.

๐Ÿ“ Struktur Folder WordPress Docker

Sebelum mulai, pastikan struktur folder kamu seperti berikut:

mablx-project/
โ”œโ”€โ”€ 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, jalankan perintah berikut:

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 selanjutnya.


โš™๏ธ 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/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 = 320" >> "$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
}

Untuk deploy via localhost, kamu bisa isi Caddyfile seperti ini:

http://192.168.1.10 {
    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 kamu telah mengarah ke IP server.


๐Ÿ—‘๏ธ 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 sederhana tanpa file .htaccess
  • โœ… Kinerja tinggi dengan PHP built-in server
  • โœ… Pengelolaan modern menggunakan Docker Compose terbaru

๐ŸŽ‰ Kesimpulan

Dengan mengikuti panduan ini, kamu 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).


Leave a Reply

Your email address will not be published. Required fields are marked *