#!/usr/bin/env bash set -euo pipefail # Helper script for docker compose workflow # Usage examples: # ./run.sh up # build (if needed) and start in background # ./run.sh rebuild # force full rebuild (no cache) and start # ./run.sh down # stop and remove containers # ./run.sh logs # follow logs # ./run.sh artisan migrate # ./run.sh sh # shell into PHP app container # ./run.sh restart # restart containers # ./run.sh build # build images (uses cache) CMD=${1:-up} shift || true case "$CMD" in build) echo "[build] Building images (with cache)..." docker compose build ;; up) echo "[up] Starting services (build if needed)..." docker compose up -d --build ;; rebuild) echo "[rebuild] Full rebuild without cache..." docker compose down || true docker compose build --no-cache docker compose up -d ;; down) echo "[down] Stopping and removing services..." docker compose down ;; restart) echo "[restart] Restarting services..." docker compose restart ;; logs) echo "[logs] Following logs (Ctrl+C to exit)..." docker compose logs -f --tail=200 "$@" ;; artisan) echo "[artisan] php artisan $*" docker compose exec app php artisan "$@" ;; sh) echo "[sh] Opening shell in app container..." docker compose exec app sh ;; *) cat < [args] Commands: up Build (if needed) and start containers build Build images using cache rebuild Rebuild images without cache then start down Stop and remove containers restart Restart running containers logs Follow logs (pass service names optionally) artisan Run php artisan sh Shell into app container EOF exit 1 ;; esac