# Resources
+ Docker Compose Quickstart
https://docs.docker.com/compose/gettingstarted/
+ docker compose command list
https://docs.docker.com/reference/cli/docker/compose/
+ Use Docker Compose
https://docs.docker.com/get-started/workshop/08_using_compose/
# Perfect Integration Setup:
```bash
nginx Container (Port 443)
↓ HTTPS requests
↓
WordPress Container (Port 9000)
↓ FastCGI
↓
MariaDB Container (Port 3306)
```
# before cheking with docker-compose
## Complete cleanup (step-by-step)
```bash!
# Stop all services
docker-compose down --remove-orphans
# Clean using Docker containers (this works without sudo)
docker run --rm -v $HOME/data/mariadb_data:/data alpine sh -c "rm -rf /data/* /data/.*" 2>/dev/null || true
docker run --rm -v $HOME/data/wordpress_data:/data alpine sh -c "rm -rf /data/* /data/.*" 2>/dev/null || true
# Clean Docker system
docker system prune -f
docker volume prune -f
# Verify directories are empty
echo "MariaDB data directory:"
ls -la $HOME/data/mariadb_data/
echo "WordPress data directory:"
ls -la $HOME/data/wordpress_data/
# Start fresh
docker-compose up --build
```
## OR: Quick one-liner cleanup
```bash!
docker-compose down && \
docker run --rm -v $HOME/data/mariadb_data:/data alpine rm -rf /data/* && \
docker run --rm -v $HOME/data/wordpress_data:/data alpine rm -rf /data/* && \
docker system prune -f
#start
&& \
docker-compose up --build
```
# Start Fresh Docker Compose:
# Docker Compose Commands:
## Building Specific Services:
```bash!
# Build only WordPress container
docker-compose build wordpress
# Build only nginx container
docker-compose build nginx
# Build only MariaDB container
docker-compose build mariadb
# Build multiple specific services
docker-compose build wordpress nginx
# Build all services
docker-compose build
```
## Running Services:
```bash!
# Start all services (mariadb, wordpress, nginx)
docker-compose up
# Start all services with build
docker-compose up --build
# Start specific service(s)
docker-compose up mariadb
docker-compose up wordpress nginx
# Start in background (detached mode)
docker-compose up -d
# Start specific service in background
docker-compose up -d wordpress
```
## Service Management:
```bash!
# Stop specific service
docker-compose stop wordpress
# Restart specific service
docker-compose restart wordpress
# Remove specific service
docker-compose rm wordpress
# View logs of specific service
docker-compose logs wordpress
docker-compose logs -f wordpress # Follow logs
```
## Checking Status:
```bash!
# See which services are running
docker-compose ps
# See all containers (running and stopped)
docker-compose ps -a
# Check resource usage
docker-compose top
```
## Complete Lifecycle:
```bash!
# Build → Start → Monitor
docker-compose build wordpress
docker-compose up wordpress
docker-compose logs -f wordpress
# Stop everything
docker-compose down
# Clean restart with build
docker-compose down
docker-compose up --build
```
---
# Cleanup thorough commands
🧹 Option 1: Clean Docker Compose Stack (Recommended)
Stop and Clean Your Project:
```bash!
# Navigate to your project
cd /home/yilin/GITHUB/inception/srcs
# Stop and remove containers, networks, and volumes
docker-compose down --volumes --remove-orphans
# Remove project-specific images
docker-compose down --rmi all
# Clean up any remaining project containers
docker rm $(docker ps -aq --filter "label=com.docker.compose.project=srcs") 2>/dev/null || true
```
🧹 Option 2: Clean Docker System (More Thorough)
Remove Unused Docker Resources:
```bash!
# Remove all stopped containers
docker container prune -f
# Remove all unused networks
docker network prune -f
# Remove all unused volumes
docker volume prune -f
# Remove all unused images
docker image prune -f
# Remove all build cache
docker builder prune -f
```
🧹 Option 3: Nuclear Option (Clean Everything)
⚠️ WARNING: This removes ALL Docker data on your system!
```bash!
# Stop all running containers
docker stop $(docker ps -q) 2>/dev/null || true
# Remove all containers
docker rm $(docker ps -aq) 2>/dev/null || true
# Remove all images
docker rmi $(docker images -q) 2>/dev/null || true
# Remove all volumes
docker volume rm $(docker volume ls -q) 2>/dev/null || true
# Remove all networks (except defaults)
docker network rm $(docker network ls -q) 2>/dev/null || true
# Clean everything (NUCLEAR OPTION)
docker system prune -a --volumes -f
```
🧹 Option 4: Clean Your Data Directories
Clean Bind-Mounted Data:
```bash!
# Remove your project data (use Docker to avoid permission issues)
docker run --rm -v $HOME/data:/data alpine sh -c "rm -rf /data/*"
# Or remove directories completely
rm -rf $HOME/data/mariadb_data $HOME/data/wordpress_data
# Recreate empty directories
mkdir -p $HOME/data/mariadb_data $HOME/data/wordpress_data
```
🎯 Recommended Clean Sequence for Your Project:
```bash!
# Complete project cleanup
cd /home/yilin/GITHUB/inception/srcs
# Stop everything
docker-compose down --volumes --remove-orphans --rmi all
# Clean data directories
docker run --rm -v $HOME/data:/data alpine sh -c "rm -rf /data/*"
# Clean Docker system
docker system prune -f
docker volume prune -f
docker network prune -f
# Verify clean state
docker ps -a # Should be empty or minimal
docker images # Should be clean
docker volume ls # Should be minimal
docker network ls # Should show only defaults
# Clean directory structure
ls -la $HOME/data/mariadb_data/ # Should be empty
ls -la $HOME/data/wordpress_data/ # Should be empty
```
🔍 Check What's Using Space:
```bash!
# See Docker disk usage
docker system df
# See detailed usage
docker system df -v
# See largest images
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" | sort -k 3 -h
# See largest volumes
docker volume ls --format "table {{.Name}}\t{{.Driver}}\t{{.Size}}"
```
🚀 After Cleanup - Fresh Start:
```bash!
# Verify everything is clean
docker ps -a
docker images
docker volume ls
docker network ls
# Start fresh
cd /home/yilin/GITHUB/inception/srcs
docker-compose up --build
```
# Summay | 📋 Quick Clean Commands by Scope:
| **Scope** | **Command** |
| ---------------------- | ----------------------------------------------------------- |
| **Project Only** | `docker-compose down --volumes --rmi all` |
| **Unused Resources** | `docker system prune -f` |
| **Everything** | `docker system prune -a --volumes -f` |
| **Data Directories** | `docker run --rm -v $HOME/data:/data alpine rm -rf /data/*` |
| **Specific Container** | `docker rm -f container_name` |
| **Specific Image** | `docker rmi image_name` |
---
# After run ```docker-compose up```, check if everything set up correctly
## 1. Service Status:
```bash!
docker-compose ps
# All services should be "Up"
```
## 2. Web Test:
```bash!
curl -k https://localhost:8443
```
=> Should return:
```html
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>My Inception Site</title>
<!-- WordPress HTML content -->
```
Instead of raw PHP code!
3. Content Type:
```bash!
curl -k -I https://localhost:8443
```
=> Should show:
```bash!
Content-Type: text/html; charset=UTF-8 # ✅ HTML, not text/plain
```