#!/usr/bin/env bash set -Eeuo pipefail ts() { date +"%Y-%m-%d %H:%M:%S"; } log() { echo "[$(ts)] [INFO] $*"; } warn(){ echo "[$(ts)] [WARN] $*" >&2; } err() { echo "[$(ts)] [ERROR] $*" >&2; } die() { err "$*"; exit 1; } cd "$(dirname "$0")/.." if ! command -v docker >/dev/null 2>&1; then die "docker is not installed or not in PATH." fi if ! docker info >/dev/null 2>&1; then die "docker daemon not reachable. Start docker service first." fi log "Stopping/removing any existing stack (safe to run repeatedly)..." # Not fatal if nothing is running docker compose down --remove-orphans >/dev/null 2>&1 || true # Additionally remove a stray container with the same name (outside this compose project) if docker ps -a --format '{{.Names}}' | grep -qx 'mssql2025'; then warn "Found stray container named mssql2025; removing it..." docker rm -f mssql2025 >/dev/null 2>&1 || true fi log "Ensuring ./data and ./backup exist..." mkdir -p ./data ./backup log "Fixing permissions for ./data and ./backup (UID 10001)..." sudo chown -R 10001:0 ./data ./backup sudo chmod -R ug+rwx ./data ./backup log "Permissions fixed ✅"