This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""部署脚本。
|
||||
|
||||
用法:
|
||||
python scripts/deploy.py --check # 预检(依赖/配置/数据库连通性)
|
||||
python scripts/deploy.py --health # 服务健康检查
|
||||
python scripts/deploy.py --docker # docker compose 构建并启动
|
||||
"""
|
||||
import argparse
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
def pre_check() -> None:
|
||||
print("== 依赖检查 ==")
|
||||
try:
|
||||
import tornado
|
||||
import sqlalchemy
|
||||
import pydantic
|
||||
print(" 核心依赖已安装")
|
||||
except ImportError as e:
|
||||
print(f" 缺少依赖: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
print("== 配置文件检查 ==")
|
||||
if (ROOT / ".env").exists():
|
||||
print(" .env 存在")
|
||||
else:
|
||||
print(" 警告: .env 不存在,将从 .env.example 复制")
|
||||
(ROOT / ".env.example").read_text()
|
||||
(ROOT / ".env").write_text((ROOT / ".env.example").read_text())
|
||||
print(" 已复制 .env.example -> .env")
|
||||
|
||||
print("== 预检完成 ==")
|
||||
|
||||
|
||||
def health() -> None:
|
||||
subprocess.run([sys.executable, str(ROOT / "scripts" / "health_check.py")])
|
||||
|
||||
|
||||
def docker_deploy() -> None:
|
||||
subprocess.run(["docker", "compose", "up", "-d", "--build"], cwd=str(ROOT), check=True)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="部署脚本")
|
||||
parser.add_argument("--check", action="store_true", help="部署预检")
|
||||
parser.add_argument("--health", action="store_true", help="健康检查")
|
||||
parser.add_argument("--docker", action="store_true", help="Docker 部署")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.check:
|
||||
pre_check()
|
||||
elif args.health:
|
||||
health()
|
||||
elif args.docker:
|
||||
docker_deploy()
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user