53 lines
1.2 KiB
Bash
Executable File
53 lines
1.2 KiB
Bash
Executable File
#!/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 <service> # 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}}"
|