WordPress is amazing, but what if you could supercharge it with cutting-edge tech and monstrous performance?
Enter FrankenWP—a WordPress build crafted for speed, flexibility, and a touch of madness (in the best way possible). With FrankenPHP at its core, FrankenWP brings your WordPress game to the next level.
In this guide, I’ll walk you through deploying FrankenWP with Docker Compose. By the end, you’ll have a high-performance WordPress stack running alongside MariaDB and phpMyAdmin. Let’s dive into this monster of a setup! 🧟♂️
What You’ll Need
Here’s what your toolbox should already have:
- VPS or local machine with Docker and Docker Compose installed.
- A custom domain (optional but recommended) to access FrankenWP.
- Basic familiarity with WordPress and Docker commands.
Step 1: Set Up Your Project Directory
Keep it clean and organized. Create a folder for this project:
mkdir -p ~/frankenwp && cd ~/frankenwp
This is where all the magic happens.
Step 2: Create the Docker Compose File
Now, let’s give life to FrankenWP with docker-compose.yml
. Create the file and paste the following:
services:
wordpress:
image: wpeverywhere/frankenwp:latest-php8.3
restart: always
ports:
- "8100:80" # HTTP
environment:
SERVER_NAME: ${SERVER_NAME:-:80}
WORDPRESS_DB_HOST: ${DB_HOST:-db}
WORDPRESS_DB_USER: ${DB_USER:-exampleuser}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD:-examplepass}
WORDPRESS_DB_NAME: ${DB_NAME:-exampledb}
WORDPRESS_DEBUG: ${WP_DEBUG:-true}
WORDPRESS_TABLE_PREFIX: ${DB_TABLE_PREFIX:-wp_}
CACHE_LOC: ${CACHE_LOC:-/var/www/html/wp-content/cache}
TTL: ${TTL:-80000}
PURGE_PATH: ${PURGE_PATH:-/__cache/purge}
PURGE_KEY: ${PURGE_KEY:-}
BYPASS_HOME: ${BYPASS_HOME:-false}
BYPASS_PATH_PREFIXES: ${BYPASS_PATH_PREFIXES:-/wp-admin,/wp-content,/wp-includes,/wp-json,/feed}
CACHE_RESPONSE_CODES: ${CACHE_RESPONSE_CODES:-000}
CADDY_GLOBAL_OPTIONS: |
email admin@xynoslab.com
auto_https disable_redirects
debug
WORDPRESS_CONFIG_EXTRA: |
define('WP_SITEURL', 'https://frankenwp.xynoslab.com');
define('WP_HOME', 'https://frankenwp.xynoslab.com');
volumes:
- ./wp-content:/var/www/html/wp-content
depends_on:
- db
tty: true
db:
image: mariadb:latest
restart: always
ports:
- ${LOCAL_DB_PORT:-3311}:3306
environment:
MYSQL_DATABASE: ${DB_NAME:-exampledb}
MYSQL_USER: ${DB_USER:-exampleuser}
MYSQL_PASSWORD: ${DB_PASSWORD:-examplepass}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-examplepass}
volumes:
- dbwp:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- ${LOCAL_PHPMYADMIN_PORT:-8086}:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-examplepass}
depends_on:
- db
volumes:
dbwp:
This configuration sets up three services:
- FrankenWP (WordPress): Powered by PHP 8.3 for cutting-edge performance.
- MariaDB: A robust database to power FrankenWP.
- phpMyAdmin: A user-friendly database management interface.
Step 3: Fire Up the Stack
Run the following command to bring the beast to life:
docker-compose up -d
Docker will pull the images, create containers, and launch the stack. Give it a moment, and your services will be up and running.
Step 4: Verify the Deployment
Here’s how to check that everything is alive and kicking:
- Open your browser and visit
http://<your-server-ip>:8100
to access WordPress. - Head to
http://<your-server-ip>:8086
to manage your database via phpMyAdmin.
🎉 If everything loads, you’ve successfully deployed FrankenWP!
Step 5: Configure Your WordPress Site
Once the setup page appears, configure your FrankenWP:
- Set up an admin account.
- Name your site and start customizing!
- Dive into advanced caching and debugging features included in FrankenWP.
Wrapping Up
FrankenWP is up and running! This setup is optimized for performance, fully compatible with PHP 8.3, and powered by Docker. With phpMyAdmin and MariaDB, managing your database becomes straightforward.
If you want to expand further, consider adding SSL with Caddy, exploring additional Dockerized plugins, or scaling the setup with load balancing.
Until next time, happy experimenting.