102 lines
2.1 KiB
Bash
Executable File
102 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# --- CONFIG ---
|
|
SANDBOX_STORAGE="${SANDBOX_STORAGE:-./data}"
|
|
APP_URL="${APP_URL:-http://localhost:8000}"
|
|
|
|
# --- FUNCTIONS ---
|
|
prepare_storage() {
|
|
echo "[*] Checking storage path: $SANDBOX_STORAGE"
|
|
if [ ! -d "$SANDBOX_STORAGE" ]; then
|
|
echo " -> Creating $SANDBOX_STORAGE on host"
|
|
sudo mkdir -p "$SANDBOX_STORAGE"
|
|
fi
|
|
|
|
echo " -> Setting ownership to Playwright user (pwuser / UID 1000)"
|
|
sudo chown -R 1000:1000 "$SANDBOX_STORAGE"
|
|
sudo chmod -R 755 "$SANDBOX_STORAGE"
|
|
|
|
echo "[+] Storage ready."
|
|
}
|
|
|
|
start_stack() {
|
|
prepare_storage
|
|
echo "[*] Building Docker image..."
|
|
docker compose build
|
|
|
|
if [[ "${1:-}" == "-d" ]]; then
|
|
echo "[*] Starting services in detached mode..."
|
|
docker compose up -d
|
|
else
|
|
echo "[*] Starting services (attached)..."
|
|
docker compose up
|
|
fi
|
|
}
|
|
|
|
stop_stack() {
|
|
echo "[*] Stopping services..."
|
|
docker compose down
|
|
}
|
|
|
|
clean_stack() {
|
|
echo "[*] Removing containers, networks, and volumes..."
|
|
docker compose down -v --remove-orphans
|
|
}
|
|
|
|
restart_stack() {
|
|
stop_stack
|
|
echo "[*] Restarting services..."
|
|
start_stack -d
|
|
}
|
|
|
|
logs_stack() {
|
|
echo "[*] Showing logs (Ctrl+C to exit)..."
|
|
docker compose logs -f
|
|
}
|
|
|
|
status_stack() {
|
|
echo "[*] Current service status:"
|
|
docker compose ps
|
|
}
|
|
|
|
healthcheck_stack() {
|
|
echo "[*] Running health check on $APP_URL ..."
|
|
if curl -fsS "$APP_URL" > /dev/null; then
|
|
echo "[+] Service is healthy and reachable."
|
|
else
|
|
echo "[!] Service is NOT reachable at $APP_URL"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# --- MAIN ---
|
|
case "${1:-}" in
|
|
start)
|
|
shift
|
|
start_stack "$@"
|
|
;;
|
|
stop)
|
|
stop_stack
|
|
;;
|
|
restart)
|
|
restart_stack
|
|
;;
|
|
clean)
|
|
clean_stack
|
|
;;
|
|
logs)
|
|
logs_stack
|
|
;;
|
|
status)
|
|
status_stack
|
|
;;
|
|
healthcheck)
|
|
healthcheck_stack
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start [-d for detached mode] | stop | restart | clean | logs | status | healthcheck}"
|
|
exit 1
|
|
;;
|
|
esac
|