Production-ready WordPress deployment stack optimized for Dokploy with Redis caching, Nginx, and management tools.
Service
Description
WordPress
PHP 8.3 FPM with Redis extension, OPcache, and WP-CLI
Nginx
Optimized reverse proxy with caching and security headers
MySQL 9.4
Database server with health checks
Redis 8
Object caching for improved performance
phpMyAdmin
Database administration interface
Performance
Redis object caching with pre-configured WordPress integration
PHP OPcache enabled for opcode caching
Gzip compression for text assets
Static asset caching (30 days)
Auto CPU detection for Nginx workers
Security
Security headers (X-Frame-Options, X-Content-Type-Options, X-XSS-Protection)
Nginx version hidden
Blocked: PHP uploads, xmlrpc.php, wp-config.php access, hidden files
Health checks on all containers
Operations
Dynamic domain detection (no hardcoded URLs)
All settings configurable via environment variables (no rebuild needed)
Graceful shutdown handling (SIGTERM)
Database connectivity checks on startup
Configuration validation before start
WP-CLI pre-installed
Create a new Compose service in Dokploy
Point to: https://github.com/Eetezadi/dokploy-wordpress-Alpine
Set Compose Path: ./docker-compose.yml
Go to Environment tab and add:
MYSQL_ROOT_PASSWORD=YourSecureRootPass123!
MYSQL_PASSWORD=YourSecureDbPass456!
WORDPRESS_DB_PASSWORD=YourSecureDbPass456!
Click Deploy
Go to the Domains tab and add:
Domain
Service
Port
yourdomain.com
nginx
80
pma.yourdomain.com
phpmyadmin
80
Default Credentials:
Service
Username
Password
phpMyAdmin
wordpress
(your MYSQL_PASSWORD)
Log in to WordPress admin (yourdomain.com/wp-admin)
Go to Plugins > Installed Plugins
Activate Redis Object Cache
Go to Settings > Redis
Click Enable Object Cache
All environment variables can be changed at any time and take effect on redeploy without requiring a container rebuild.
Variable
Default
Description
MYSQL_ROOT_PASSWORD
-
Required. MySQL root password
MYSQL_DATABASE
wordpress
Database name
MYSQL_USER
wordpress
Database user
MYSQL_PASSWORD
-
Required. Database password
WORDPRESS_DB_HOST
db
Database host
WORDPRESS_DB_USER
wordpress
WordPress database user
WORDPRESS_DB_PASSWORD
-
Required. WordPress database password
WORDPRESS_DB_NAME
wordpress
WordPress database name
PHP & Performance Settings
Variable
Default
Description
PHP_UPLOAD_MAX_FILESIZE
256M
Maximum upload file size
PHP_POST_MAX_SIZE
256M
Maximum POST data size
PHP_MEMORY_LIMIT
512M
PHP memory limit
PHP_MAX_EXECUTION_TIME
300
Script timeout in seconds
PHP_MAX_INPUT_TIME
300
Input parsing timeout
PHP_MAX_INPUT_VARS
3000
Maximum input variables
PHP_OPCACHE_MEMORY
128
OPcache memory in MB
PHP_OPCACHE_MAX_FILES
4000
Maximum cached files
PHP_OPCACHE_VALIDATE
0
Validate timestamps (0=off for production)
Variable
Default
Description
NGINX_CLIENT_MAX_BODY_SIZE
256M
Maximum upload size in Nginx
Variable
Default
Description
REDIS_MAXMEMORY
256mb
Redis maximum memory
REDIS_MAXMEMORY_POLICY
allkeys-lru
Eviction policy
Variable
Default
Description
NGINX_CPU_LIMIT
0.5
Nginx CPU limit
NGINX_MEMORY_LIMIT
256M
Nginx memory limit
WORDPRESS_CPU_LIMIT
1.0
WordPress CPU limit
WORDPRESS_MEMORY_LIMIT
1G
WordPress memory limit
DB_CPU_LIMIT
1.0
MySQL CPU limit
DB_MEMORY_LIMIT
1G
MySQL memory limit
REDIS_CPU_LIMIT
0.5
Redis CPU limit
REDIS_MEMORY_LIMIT
512M
Redis memory limit
PHPMYADMIN_CPU_LIMIT
0.5
phpMyAdmin CPU limit
PHPMYADMIN_MEMORY_LIMIT
256M
phpMyAdmin memory limit
Volume
Purpose
wordpress_data
WordPress files (/var/www/html)
db_data
MySQL data
redis_data
Redis persistence
Set strong passwords for all database credentials
Consider restricting access to phpMyAdmin subdomain
Enable Dokploy's built-in SSL/TLS
Keep WordPress and plugins updated
MIT