first commit
This commit is contained in:
101
sandbox.sh
Executable file
101
sandbox.sh
Executable file
@@ -0,0 +1,101 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user