homelab-codex-ws/scripts/lib/compose.sh

46 lines
1.2 KiB
Bash
Raw Normal View History

2026-05-11 21:20:13 +02:00
#!/usr/bin/env bash
# compose.sh - Docker Compose operations
run_compose_up() {
local service=$1
local svc_dir="${REPO_PATH}/services/$service"
local runtime_config_dir="${RUNTIME_PATH}/config/$service"
if [[ ! -d "$svc_dir" ]]; then
log "ERROR" "Service directory not found: $svc_dir"
return 1
fi
mkdir -p "$runtime_config_dir"
local compose_args=("-f" "${svc_dir}/docker-compose.yml")
if [[ -f "${runtime_config_dir}/docker-compose.override.yml" ]]; then
log "INFO" "Using override for $service"
compose_args+=("-f" "${runtime_config_dir}/docker-compose.override.yml")
fi
# Determine .env
local env_file=""
if [[ -f "${runtime_config_dir}/.env" ]]; then
env_file="${runtime_config_dir}/.env"
elif [[ -f "${svc_dir}/.env" ]]; then
env_file="${svc_dir}/.env"
fi
local run_cmd=("docker" "compose")
run_cmd+=("${compose_args[@]}")
if [[ -n "$env_file" ]]; then
run_cmd+=("--env-file" "$env_file")
fi
run_cmd+=("up" "-d" "--remove-orphans")
log "INFO" "Running: ${run_cmd[*]}"
if ! "${run_cmd[@]}"; then
log "ERROR" "Docker compose failed for $service"
return 1
fi
return 0
}
export -f run_compose_up