Files
geo/deploy/scripts/load-and-start.sh
T
root 0a3558fc51 feat(deploy): add containerized deployment configuration and scripts
- Add Dockerfile for frontend and server services
- Add Docker Compose configs (standard and offline mode)
- Add nginx.conf for admin-web service
- Add deploy scripts: package.sh (packaging) and load-and-start.sh (startup)
- Add deploy/config.yaml, .env.example, and prompts.yml configurations
- Add image management design specification doc
2026-04-15 21:27:15 +08:00

57 lines
2.3 KiB
Bash
Executable File

#!/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://<server-ip>:15672 (geo / geo_dev)"
echo " MinIO: http://<server-ip>:9001 (minioadmin / minioadmin)"