====== π³ 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