46 lines
1.2 KiB
Bash
46 lines
1.2 KiB
Bash
#!/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
|