# 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 ```