#!/usr/bin/env bash # load-and-start.sh — 在【离线目标服务器】上运行 # 加载镜像并启动所有服务 # # 用法(解压部署包后): # bash deploy.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 读取打包时记录的元数据 if [[ -f "${SCRIPT_DIR}/.package-meta" ]]; then source "${SCRIPT_DIR}/.package-meta" fi IMAGE_TAG="${IMAGE_TAG:-latest}" LOCAL_PREFIX="${LOCAL_PREFIX:-geo-rankly}" # ─── 检查 .env ──────────────────────────────────────────────────────────────── if [[ ! -f "${SCRIPT_DIR}/.env" ]]; then echo "❌ 未找到 .env 文件,请先执行:" echo " cp .env.example .env && vi .env" exit 1 fi # ─── Step 1: 加载镜像 ───────────────────────────────────────────────────────── echo "==> [1/3] 加载 Docker 镜像(可能需要几分钟)..." docker load -i "${SCRIPT_DIR}/images.tar" echo " 镜像加载完成" docker images | grep -E "geo-rankly|postgres|rabbitmq|redis|qdrant|minio" | head -20 # ─── Step 2: 设置 IMAGE_REGISTRY 为本地前缀 ────────────────────────────────── echo "==> [2/3] 配置离线镜像引用..." export IMAGE_REGISTRY="${LOCAL_PREFIX}" export IMAGE_TAG="${IMAGE_TAG}" # ─── Step 3: 启动服务 ───────────────────────────────────────────────────────── echo "==> [3/3] 启动所有服务..." cd "${SCRIPT_DIR}" docker compose \ -f docker-compose.yaml \ -f docker-compose.offline.yaml \ --env-file .env \ up -d echo "" echo "✅ 部署完成!" echo "" echo "服务状态:" docker compose -f docker-compose.yaml -f docker-compose.offline.yaml ps echo "" echo "查看日志: docker compose -f docker-compose.yaml logs -f tenant-api" echo "停止服务: docker compose -f docker-compose.yaml down" echo "管理界面:" echo " RabbitMQ: http://:15672 (geo / geo_dev)" echo " MinIO: http://:9001 (minioadmin / minioadmin)"