#!/usr/bin/env bash set -euo pipefail # 使用远端 infra 基础组件启动本地 muse-server。 # 默认读取 ~/.config/muse-repo/infra.env;也可以通过 MUSE_INFRA_ENV 指定其它文件。 SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" REPO_DIR="$(cd -- "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd)" ENV_FILE="${MUSE_INFRA_ENV:-${HOME}/.config/muse-repo/infra.env}" if [[ -f "${ENV_FILE}" ]]; then set -a # shellcheck disable=SC1090 source "${ENV_FILE}" set +a fi require_env() { local name="$1" if [[ -z "${!name:-}" ]]; then echo "缺少环境变量 ${name}。请先复制 scripts/dev/infra.env.example 到 ${ENV_FILE} 并填入真实值。" >&2 exit 1 fi } require_env MUSE_POSTGRES_PASSWORD require_env MUSE_REDIS_PASSWORD export MUSE_POSTGRES_HOST="${MUSE_POSTGRES_HOST:-100.64.0.8}" export MUSE_POSTGRES_PORT="${MUSE_POSTGRES_PORT:-5433}" export MUSE_POSTGRES_DATABASE="${MUSE_POSTGRES_DATABASE:-muse_local}" export MUSE_POSTGRES_USERNAME="${MUSE_POSTGRES_USERNAME:-muse_dev}" export MUSE_REDIS_HOST="${MUSE_REDIS_HOST:-100.64.0.8}" export MUSE_REDIS_PORT="${MUSE_REDIS_PORT:-6379}" cd "${REPO_DIR}" echo "启动 muse-server,profile=local,infra,数据库=${MUSE_POSTGRES_HOST}:${MUSE_POSTGRES_PORT}/${MUSE_POSTGRES_DATABASE},Redis=${MUSE_REDIS_HOST}:${MUSE_REDIS_PORT}" echo "编译 muse-server 及其依赖模块..." # Maven 在本机并发下载大量依赖时偶发 TLS 握手中断;单线程下载更稳。 # 本地启动只需要可运行 jar,不需要编译和执行测试代码;clean 可避免复用旧的 fat jar 依赖产物。 mvn -U -Dmaven.artifact.threads=1 -pl muse-server -am -Dmaven.test.skip=true clean package echo "运行 muse-server/target/muse-server.jar" exec java -jar muse-server/target/muse-server.jar --spring.profiles.active=local,infra