#!/bin/bash # Start room services # # Usage: # ./start.sh # Start all (foreground) # ./start.sh -d # Start all (detached) # ./start.sh --build # Start with rebuild # ./start.sh # Start specific service # # This is a TEMPLATE. Copy to your room's ctrl/ and customize. set -e cd "$(dirname "$0")/.." # Load environment [ -f ".env" ] && set -a && source .env && set +a DETACH="" BUILD="" TARGET="all" SERVICE_DIRS=() # Auto-detect services (dirs with docker-compose.yml) for dir in */; do [ -f "$dir/docker-compose.yml" ] && SERVICE_DIRS+=("${dir%/}") done for arg in "$@"; do case $arg in -d|--detached) DETACH="-d" ;; --build) BUILD="--build" ;; *) [[ " ${SERVICE_DIRS[*]} " =~ " ${arg} " ]] && TARGET="$arg" ;; esac done start_service() { local svc=$1 echo "Starting $svc..." (cd "$svc" && docker compose up $DETACH $BUILD) [ -n "$DETACH" ] && echo " $svc started" } if [ "$TARGET" = "all" ]; then for svc in "${SERVICE_DIRS[@]}"; do start_service "$svc" done else start_service "$TARGET" fi [ -n "$DETACH" ] && docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"