- PyInstaller 打包后端+前端+运行时为单文件二进制;install.sh 一键部署(systemd、SQLite 零配置起步,支持 x86_64/aarch64) - Linux 二进制部署自动检测 GitHub 新版本,前端一键更新(下载、原子替换二进制、自动重启服务);Docker 部署提示 compose pull - CI 新增 linux-binary 任务,每个版本构建 Linux 二进制并附加到 GitHub Release(amd64) - README 与 Docker Hub 介绍按双部署形态与新功能重写
40 lines
1.2 KiB
RPMSpec
40 lines
1.2 KiB
RPMSpec
# PyInstaller 打包配置(debug18):把后端 + 前端 dist + 运行时打成单文件 Linux 二进制
|
|
# 用法(在仓库根目录):pyinstaller ros-dpi.spec
|
|
import os
|
|
from PyInstaller.utils.hooks import collect_all, collect_data_files
|
|
|
|
block_cipher = None
|
|
|
|
datas = [("frontend/dist", "frontend_dist")]
|
|
hidden = ["uvicorn.logging", "uvicorn.loops", "uvicorn.loops.auto", "uvicorn.protocols",
|
|
"uvicorn.protocols.http", "uvicorn.protocols.http.auto", "uvicorn.protocols.websockets",
|
|
"uvicorn.protocols.websockets.auto", "uvicorn.lifespan", "uvicorn.lifespan.on",
|
|
"app.main", "app.routers", "app.collector"]
|
|
for pkg in ("uvicorn", "pymysql", "cryptography", "passlib", "anyio"):
|
|
attrs = collect_all(pkg)
|
|
datas += attrs[0]
|
|
hidden += attrs[1]
|
|
|
|
a = Analysis(
|
|
["backend/ros_dpi_launcher.py"],
|
|
pathex=["backend"],
|
|
binaries=[],
|
|
datas=datas,
|
|
hiddenimports=hidden,
|
|
hookspath=[],
|
|
runtime_hooks=[],
|
|
excludes=["tkinter", "pytest"],
|
|
noarchive=False,
|
|
)
|
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.zipfiles,
|
|
a.datas,
|
|
name="ros-dpi",
|
|
upx=False,
|
|
console=True,
|
|
)
|