WordPress Docker Setup
Prerequisites
- Ubuntu system (20.04/22.04 recommended)
- Docker installed (if not, follow Step 1)
- Basic terminal familiarity
Step-by-Step Guide
1. Install Docker
sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable --now docker
sudo usermod -aG docker ${USER} # Add current user to docker group
newgrp docker # Refresh group permissions
2. Create Docker Compose File
Create docker-compose.yml
with:
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
restart: unless-stopped
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80" # Binds host port 8080 to container port 80
volumes:
- ./wp-content:/var/www/html/wp-content # Local folder binding
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
restart: unless-stopped
volumes:
db_data:
3. Key Configuration Details
Port Binding:
-
ports: - "8080:80"
maps:- Host machine port: 8080 (accessible via
http://localhost:8080
) - Container port: 80 (WordPress default port)
- Host machine port: 8080 (accessible via
Volume Binding:
-
volumes: - ./wp-content:/var/www/html/wp-content
creates:- Local folder:
./wp-content
(relative to compose file) - Container path: WordPress content directory
- Changes persist after container restarts
- Local folder:
4. Launch the Stack
docker-compose up -d
5. Verification
- Check running containers:
docker ps
- Access WordPress at
http://localhost:8080
- Check local filesystem for created
wp-content
folder
6. Management Commands
- Stop containers:
docker-compose down
- View logs:
docker-compose logs -f
- Update images:
docker-compose pull && docker-compose up -d
Troubleshooting
- Port conflicts: Change left-side port in
ports
mapping (e.g.,8081:80
) - Permission issues:
sudo chown -R $USER:$USER ./wp-content
- Database errors: Verify credentials match in both service definitions