Skip to content

fubd/paper-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Campus Part-time Platform

Run (dev)

cd /Users/fubd/swan/project
docker compose --profile dev up -d --build

Run (prod-like)

# build frontend once
docker compose run --rm frontend true
# then start backend + nginx + db
docker compose --profile prod up -d --build backend nginx db
# optional: enable nightly DB backups (prod profile)
docker compose --profile prod up -d db_backup

Environment

  • Edit .env for passwords and DB name

Backups

  • Nightly at 03:00, db_backup writes backups/backup-YYYY-MM-DD.sql.gz and prunes >7 days
  • Restore example:
gunzip -c backups/backup-YYYY-MM-DD.sql.gz | mysql -h 127.0.0.1 -P 3306 -uroot -p${MYSQL_ROOT_PASSWORD} ${MYSQL_DATABASE}

开发(容器化推荐)

make up-dev-container
  • 前端入口:http://localhost/
  • 后端健康:http://localhost:8080/api/health
  • API 根路径:http://localhost:8080/api
  • MySQL:127.0.0.1:3306(数据库名/密码来自 .env
  • 停止 dev 服务:make stop-dev-container
  • 完全关闭(含 db):make down-dev-container

说明(端口稳定性):

  • 启动前释放 5173/8080,避免与本机进程冲突。
  • frontend-dev:5173backend-dev:8080nginx-dev:80 端口固定。
  • nginx-dev 使用 Docker 内置 DNS(resolver 127.0.0.11)动态解析上游容器,容器重启不再 502。

备用启动(等价的 Compose):

docker compose --profile dev up -d --build db backend-dev frontend-dev nginx-dev

本机开发(可选,不与容器并行)

# 前端仅本机运行(不要同时启动 frontend-dev 容器)
API_PROXY=http://localhost:8080 npm run dev
  • 预览端口固定:frontend/rsbuild.config.ts 已设置 strictPort: truehost: "0.0.0.0"
  • 本机模式推荐在不运行容器前端的情况下使用,避免端口冲突。

命令摘要

  • make up-dev-container:启动容器化开发(db + backend-dev + frontend-dev + nginx-dev)
  • make stop-dev-container:停止 dev 服务(不删数据卷)
  • make down-dev-container:关闭整个栈(含 db)
  • make backend-dev-logs / make frontend-dev-logs:查看容器日志
  • make up-prod:生产栈(backend + frontend + nginx;前端由 nginx 提供 dist)

发布到阿里云(含零拷贝远程部署)

  • 构建并推送镜像

    • 登录:make docker-login ALIYUN_USERNAME=1997f16cd
    • 后端:make build-push-backend VERSION=1.0.0
    • Nginx(前端 dist):make build-push-nginx VERSION=1.0.0
    • 数据库(内置 init SQL):make build-push-db VERSION=1.0.0
    • 一键(含 DB):make release-all VERSION=1.0.0 ALIYUN_USERNAME=1997f16cd
  • 远程部署(零拷贝,SSH 管道执行)

    • make remote-deploy REMOTE_HOST=root@your-server ALIYUN_USERNAME=1997f16cd VERSION=1.0.0 MYSQL_ROOT_PASSWORD=**** MYSQL_DATABASE=campus JWT_SECRET=****
    • 说明:
      • 无需复制仓库或落地 compose,服务端直接从标准输入读取 docker-compose.remote.yml
      • DB 镜像在首次数据卷为空时自动执行内置 SQL;后续保留数据卷即可
      • 敏感变量建议用服务器侧环境或 .env 管理

文档

  • docs/开发环境操作手册.md:本地与容器化开发、数据脚本
  • docs/架构与运维设计.md:组件架构、Compose、镜像策略
  • docs/发布与部署.md:发布到阿里云、零拷贝远程部署、健康校验、升级回滚

发布脚本

  • 一键:tools/release.sh --version 1.0.0 --user 1997f16cd --publish
  • 远程(SSH 零拷贝):tools/release.sh --version 1.0.0 --user 1997f16cd --remote root@your-server --mysql-root **** --mysql-db campus --jwt **** --registry registry.cn-hangzhou.aliyuncs.com
  • 远程(SSH + .env):tools/release.sh --version 1.0.0 --user 1997f16cd --remote root@your-server --env-file .env
  • 远程(docker context):tools/release.sh --version 1.0.0 --user 1997f16cd --context prod --env-file .env

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors