AstroResearch/deploy.sh
Asfmq 2c8d0b8f8b feat: LAMOST DR12-14 与子版本体系接入、观测层安全加固与并发异步化
- LAMOST 新增 DR12/13/14 及子版本(v0/v1.0/v1.1/v2.0)维度,Internal 发布标记需登录认证并前端灰显,release×subtype 交叉约束下沉至 capabilities 统一声明
- ObservationFetcher trait 扩展版本/认证/交叉约束能力声明,version 参数贯穿 client→service→API→Agent tool→前端全链路
- 安全:observation cache SQL 全参数绑定 + LIKE 转义、cone_cache_hash 加长度前缀防碰撞、DESI survey/program 白名单防穿越
- 异步化:persist/cached_files_total_size/maybe_persist_tool_result迁移到 tokio::fs;cancelled_runs 与 session_permission_checkers改用 DashMap;auth 读锁优先 + 60s 节流
- Gaia 去 native-tls 改禁用连接池规避 UnexpectedEof,reqwest 移除 native-tls feature
- 重构:Source/ProductType from_str 集中解析、download 模块拆分为 try_download_pdf/html、AgentRuntime::init 抽取共享逻辑
- 部署:新增 deploy.sh 一键打包推送脚本、catch-panic 启用
2026-07-07 21:16:46 +08:00

87 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# deploy.sh — AstroResearch 一键本地打包并推送服务器脚本 (Compose 部署版)
# 退出脚本如果发生错误
set -e
# =============================================================================
# 配置参数
# =============================================================================
REMOTE_USER="fmq"
REMOTE_IP="100.66.1.2"
REMOTE_PORT="22"
REMOTE_DIR="/vol1/1000/program/astroresearch"
IMAGE_NAME="astroresearch"
TAG="latest"
TAR_NAME="astroresearch.tar.gz"
echo "=== 1. 开始在本地构建 Docker 镜像 (基于 Dockerfile.modeB) ==="
docker build -f Dockerfile.modeB -t ${IMAGE_NAME}:${TAG} .
echo "=== 2. 将镜像导出并压缩为本地临时文件 ${TAR_NAME} ==="
docker save ${IMAGE_NAME}:${TAG} | gzip > ${TAR_NAME}
echo "=== 3. 上传镜像包到服务器目标目录 ==="
scp -P ${REMOTE_PORT} ${TAR_NAME} ${REMOTE_USER}@${REMOTE_IP}:${REMOTE_DIR}/
echo "=== 4. 连接服务器:载入镜像并使用 Docker Compose 启动 ==="
# 使用 'EOF' 锁死环境,防止本地变量混淆远程环境变量
ssh -p ${REMOTE_PORT} ${REMOTE_USER}@${REMOTE_IP} << 'EOF'
set -e
# 远程运行参数
REMOTE_DIR="/vol1/1000/program/astroresearch"
IMAGE_NAME="astroresearch"
TAG="latest"
TAR_NAME="astroresearch.tar.gz"
echo " -> 正在导入 Docker 镜像..."
docker load < ${REMOTE_DIR}/${TAR_NAME}
echo " -> 清理服务器上的临时镜像压缩包..."
rm -f ${REMOTE_DIR}/${TAR_NAME}
echo " -> 在服务器上写入/更新生产环境的 docker-compose.yml..."
cat > ${REMOTE_DIR}/docker-compose.yml << 'INNER_EOF'
version: '3.8'
services:
astroresearch:
image: astroresearch:latest
container_name: astroresearch
restart: always
ports:
- "8001:8000"
env_file:
- .env
environment:
- DATABASE_URL=sqlite:///app/library/astro_research.db
- LIBRARY_DIR=/app/library
- SKILLS_DIR=/app/skills
- LOG_DIR=/app/logs
- PORT=8000
volumes:
- ./library:/app/library
- ./logs:/app/logs
- ./skills:/app/skills:ro
INNER_EOF
# 进入远程部署目录
cd ${REMOTE_DIR}
echo " -> 停止并移除已有的旧服务容器 (docker compose down)..."
docker compose down 2>/dev/null || true
echo " -> 使用 Docker Compose 启动新服务 (docker compose up -d)..."
docker compose up -d
echo " -> 部署成功!正在等待 3 秒检查服务运行状态..."
sleep 3
docker compose ps
EOF
echo "=== 5. 清理本地临时压缩包 ==="
rm -f ${TAR_NAME}
echo "🎉 所有部署操作已圆满完成!服务已在服务器上通过 Docker Compose 后台运行。"