taro-server 已经整理为可 Docker 化部署,包含本地一键联调的 app + mysql,以及数据库备份/恢复脚本。
Dockerfile: Node.js 服务镜像Dockerfile.mysql: 本地联调用 MySQL 镜像,内置初始化 SQLdocker-compose.yml: 应用 + MySQL 一键启动.env.example: 环境变量模板sql/docker-init.sql: Docker 首次启动时自动初始化数据库scripts/backup-db.sh: 导出当前 MySQL 数据scripts/restore-db.sh: 导入 SQL 备份
- 复制环境变量模板
cp .env.example .env- 按实际情况修改
.env
至少要改这些值:
APPIDAPPSECRETJWT_SECRETCOS_SECRET_IDCOS_SECRET_KEYDB_PASSWORDMYSQL_ROOT_PASSWORD
- 构建并启动
docker compose up -d --build- 查看状态
docker compose ps
docker compose logs -f app如果你修改了 sql/docker-init.sql,注意它只会在 MySQL 数据卷首次创建时执行一次。需要重新初始化库时,用:
docker compose down -v
docker compose up -d --build服务默认地址:
- API:
http://localhost:3300 - 健康检查:
http://localhost:3300/health - MySQL:
localhost:3306
停止服务:
docker compose down停止并删除数据库卷:
docker compose down -v重建应用镜像:
docker compose up -d --build app项目内置了最小 CI/CD:
npm run check:syntax: 校验全部.js文件语法npm run check:compose: 使用.env.example兜底校验docker-compose.ymlnpm run ci: 本地复用和 GitHub Actions 复用的总检查入口
GitHub Actions 包含两条工作流:
.github/workflows/ci.yml在push到main和pull_request时执行依赖安装、语法检查、Compose 校验、Docker 镜像构建。.github/workflows/docker-publish.yml在main分支推送后,自动将应用镜像发布到ghcr.io/<owner>/<repo>。.github/workflows/deploy.yml在CI成功且分支为main后,通过 SSH 连接8.138.205.39,进入eventa/eventa-sever目录执行git pull和docker compose up -d --build。
部署工作流依赖以下 GitHub Secrets:
SERVER_USER: 云服务器 SSH 用户名SERVER_SSH_KEY: 云服务器私钥内容SERVER_PORT: SSH 端口,可选,默认22
本地手动执行 CI 检查:
npm ci
npm run ci导出数据库:
./scripts/backup-db.sh也可以指定输出文件:
./scripts/backup-db.sh backups/prod.sql导入数据库:
./scripts/restore-db.sh backups/prod.sql迁移到新机器的最小步骤:
- 复制
taro-server/目录 - 复制
.env - 复制你的 SQL 备份
- 执行
docker compose up -d - 执行
./scripts/restore-db.sh <备份文件>
npm install
npm start本地运行同样读取 .env。