====== 🐳 Docker & Docker Compose Setup Guide for a Fresh Ubuntu VM ====== This page is designed for your TorresVault wiki. It provides a clean, repeatable checklist and command reference for preparing any new Ubuntu Server VM before deploying an app. This is the **standard baseline** you use across all your VMs. --- ===== βœ… 1. Update & Upgrade the System ===== These commands ensure the VM is fully patched before installing anything. sudo apt update && sudo apt upgrade -y sudo apt autoremove -y sudo reboot --- ===== πŸ‹ 2. Install Docker ===== The recommended officially supported installation method. # Remove old versions (optional) sudo apt remove -y docker docker-engine docker.io containerd runc # Install dependencies sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # Add Docker’s official GPG key sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ==== Enable & Start Docker ==== sudo systemctl enable docker sudo systemctl start docker --- ===== πŸ‘€ 3. Add Your User to the docker Group ===== This lets you run Docker without sudo. sudo usermod -aG docker $USER newgrp docker --- ===== πŸ“¦ 4. Install Standalone Docker Compose (Optional) ===== For apps needing legacy docker-compose v1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose Verify: docker-compose --version --- ===== πŸ“ 5. Create App Directory Structure ===== Standard layout for TorresVault app VMs. mkdir -p ~/apps//data mkdir -p ~/apps//config cd ~/apps/ --- ===== 🧱 6. Create a Standard docker-compose.yml ===== Template to reuse for each app. version: "3.9" services: app: image: container_name: restart: unless-stopped ports: - "PORT:PORT" volumes: - ./config:/config - ./data:/data environment: - TZ=America/New_York --- ===== ▢️ 7. Start Containers ===== Using Docker Compose v2: docker compose up -d Using docker-compose v1: docker-compose up -d --- ===== πŸ“Œ 8. Useful Docker Commands ===== **View running containers:** docker ps **View logs:** docker logs -f **Restart container:** docker restart **Stop all containers:** docker stop $(docker ps -q) **Remove all stopped containers:** docker container prune --- ===== πŸ› οΈ 9. Useful Docker Compose Commands ===== **Recreate after editing docker-compose.yml:** docker compose down && docker compose up -d **Validate syntax:** docker compose config --- ===== πŸ”„ 10. Full Quick Setup (Copy/Paste) ===== Use this block for rapid setup on every new VM. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y sudo apt install -y ca-certificates curl gnupg lsb-release sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker $USER newgrp docker