补充说明
本教程介绍 fan-shop 从 GitHub Actions 自动发布(源码包 + Docker 镜像)到目标服务器一键安装、卸载、升级的完整流程,适用于个人项目自建发布链路。
项目:fan-shop|非凡商店(基于 Docker 的容器管理平台) 仓库:https://github.com/meimolihan/fan-shop Docker 镜像:
mobufan/fan-shop:latest
安装与卸载
安装 / 升级
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-shop/main/scripts/install.sh)"
- 指定版本安装(不传则自动解析 GitHub Releases 最新版)
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-shop/main/scripts/install.sh)" v2.1.7
systemd 直装模式采用固定参数:应用目录
/opt/fan-shop、监听端口8001。脚本从 GitHub Release 下载自包含源码包fan-shop-<版本>.tar.gz(backend + frontend 完整源码),创建 Python venv(FastAPI/uvicorn)并注册 systemd 服务。
卸载命令
bash scripts/uninstall.sh
- 默认保留程序目录与数据(
/opt/fan-shop/backend/data),仅删除 venv/前端/日志/备份 - 彻底清除(连数据一起删除)加
--purge
bash scripts/uninstall.sh --purge
- 远程一键卸载
bash <(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-shop/main/scripts/uninstall.sh) --purge
Docker Compose 部署
mkdir -p /vol1/1000/compose/fan-shop && cd /vol1/1000/compose/fan-shop
name: fan-shop
services:
fan-shop:
image: mobufan/fan-shop:latest
container_name: fan-shop
ports:
- "8000:8001"
volumes:
- ./backend/data:/app/data
- ./backend/repos:/app/repos
- ./backend/scripts:/app/scripts
- ./backend/backup:/app/backup
- ./backend/logs:/app/logs
- ./backend/image:/app/image
- /var/run/docker.sock:/var/run/docker.sock
- /:/host:rw
- /etc/docker:/etc/docker:rw
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
environment:
- PYTHONUNBUFFERED=1
privileged: true
restart: unless-stopped
fan-shop 是容器管理平台,必须挂载
/var/run/docker.sock与宿主根目录/:(管理 Docker 与访问宿主机),并以privileged运行,部署前请确认宿主机 Docker 环境正常。
启动:
docker compose up -d
docker ps | grep fan-shop
脚本命令
| 命令 | 说明 |
|---|---|
bash scripts/install.sh [版本] |
安装/升级为 systemd 服务(不传版本=最新 Release) |
bash scripts/uninstall.sh [--purge] |
卸载 fan-shop(默认保留数据) |
bash scripts/build-and-push.sh v2.1.7 --yes |
更新版本号 + 打 tag + 推送(触发 GitHub Actions) |
日常管理命令
| 操作 | 命令 |
|---|---|
| 启动 | systemctl start fan-shop |
| 关闭 | systemctl stop fan-shop |
| 重启 | systemctl restart fan-shop |
| 状态 | systemctl status fan-shop |
| 查看实时日志 | journalctl -u fan-shop -f |
| 查看最近 30 行日志 | journalctl -u fan-shop -n 30 --no-pager |
| 关闭开机自启 | systemctl disable fan-shop |
| 端口放行 | firewall-cmd --permanent --add-port=8001/tcp && firewall-cmd --reload(firewalld,systemd 直装) |
| Docker 版升级 | docker compose pull && docker compose up -d |
应用目录说明
- 默认应用部署目录:
/opt/fan-shop(systemd 直装)backend/app/:FastAPI 后端源码(main.py入口、version.py版本号)backend/data/:应用数据目录backend/logs/:运行日志(systemd 环境变量APP_LOG_DIR)backend/backup/:应用内备份恢复输出目录venv/:Python 虚拟环境(pip 安装 requirements.txt)frontend/:前端静态资源scripts/:install.sh / uninstall.sh
- 服务单元:
/etc/systemd/system/fan-shop.service(ExecStart为venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8001) - 默认监听端口:8001;启动日志含
Uvicorn running on http://0.0.0.0:8001 - 无 CLI
--version参数,版本号见backend/app/version.py(VERSION = "v2.1.7") - 账号:首次使用需注册用户(bcrypt 密码存储,登录失败限流)