#!/usr/bin/env bash
# Real demos for P098 "Docker vs Docker Compose: Which One Should You Use?". Runs on the Mac's Docker Desktop.
# One container, ce-p098-laptop (Ana's laptop): a stock Ubuntu 24.04 with systemd as PID 1, Ubuntu's own Docker
# (docker.io) and its Compose plugin (docker-compose-v2; lab/Dockerfile), run --privileged with its own cgroup
# namespace and fresh volumes for /var/lib/docker and /var/lib/containerd, so its Docker starts empty.
# Ana's shop (lab/shop: a Python app that keeps orders in PostgreSQL) is started by hand with `docker`, then with
# `docker compose`. Every command shown is typed into a real login shell in a pty (demo_driver.py).
# Needs: Docker and internet for Docker Hub (postgres:18-alpine, python:3.13-slim and the pip install in shop-app).
set -euo pipefail
cd "$(dirname "$0")"
P=ce-p098
cleanup() { docker rm -f -v $P-laptop >/dev/null 2>&1 || true; }
cleanup
[ -n "${KEEP:-}" ] || trap cleanup EXIT
docker build -q -t $P-laptop lab >/dev/null
docker run -d --name $P-laptop --hostname laptop --privileged --cgroupns=private \
  --tmpfs /run --tmpfs /run/lock -v /var/lib/docker -v /var/lib/containerd $P-laptop >/dev/null
for i in $(seq 60); do
  docker exec $P-laptop docker info >/dev/null 2>&1 && break; sleep 1
done
docker exec $P-laptop docker info >/dev/null
/opt/homebrew/bin/python3.14 demo_driver.py "$P-laptop"
