WP Docker is a clean, production-focused WordPress stack for people who want fast setup, predictable versions, and simple operations. It ships with two compose options: a SQLite-first setup for lightweight deployments, and a MariaDB setup when you need a separate database service.
Everything is designed to stay practical: fixed image tags, persistent Docker volumes, Nginx + PHP-FPM, and built-in utilities for file and database access.
| Component | Version | Notes |
|---|---|---|
| WordPress (SQLite compose) | ghcr.io/yunussandikci/wordpress-sqlite:php8.5-fpm | Main app with SQLite integration |
| WordPress (MariaDB compose) | wordpress:fpm | Main app for external DB mode |
| Nginx | nginx:1.28-alpine | Web server |
| File Browser | filebrowser/filebrowser:v2.62.2-s6 | File management |
| Adminer | adminer-5.4.2.php | Database management |
| MariaDB | mariadb:11.8-noble | Used only in MariaDB compose |
- SQLite mode: docker-compose.yml
- MariaDB mode: docker-compose.mariadb.yml
Use one mode at a time.
This project is designed to run directly in Dokploy for production.
- Deploy this repository in Dokploy.
- Choose one compose file:
docker-compose.yml(SQLite)docker-compose.mariadb.yml(MariaDB)
- Configure environment variables from
.env.example. - Configure your Nginx route for your main domain and SSL in Dokploy.
- Configure a File Browser route in Dokploy pointing to
files.domain.com. - Configure a Nginx route in Dokploy pointing to
db.domain.com. - Deploy the stack.
Use only one mode at a time: SQLite OR MariaDB.
Copy env file:
cp .env.example .envEdit .env and set your passwords.
Option A - Start SQLite stack:
docker compose up -dOption B - Start MariaDB stack:
docker compose -f docker-compose.mariadb.yml up -dStop SQLite stack (if Option A was used):
docker compose downStop MariaDB stack (if Option B was used):
docker compose -f docker-compose.mariadb.yml down- WordPress: domain.com
- File Browser: files.domain.com
- Adminer: db.domain.com
WP-Docker is designed to run behind Cloudflare with full integration:
- DNS: use Cloudflare as your authoritative DNS.
- CDN: keep proxy enabled to use edge caching and global delivery.
- Firewall: use WAF and rate limiting for public routes.
- Cache: use Super Page Cache for Cloudflare in WordPress.
Recommended security hardening:
- Protect
files.domain.comwith Traefik Middleware or Cloudflare Zero Trust. - Protect
db.domain.comwith Traefik Middleware or Cloudflare Zero Trust.
- Image tags are intentionally fixed for predictable deployments.
- File Browser healthcheck is disabled by design.
- Data is persisted in named Docker volumes.