shiran 9de0a56afa feat(config): 添加环境变量配置支持动态镜像和端口设置
- 在 .env.example 中添加 SERVER_BASE_IMAGE、SERVER_INTERNAL_PORT 等配置项
- 添加前端构建相关的 NODE_IMAGE 和 NGINX_IMAGE 配置
- 添加客户端 H5 和原生应用的 API 基础路径配置
- 支持动态端口配置以提高部署灵活性

feat(docker): 更新 Dockerfile 使用参数化镜像和端口配置

- 修改 server/Dockerfile 支持动态基础镜像和内部端口
- 更新 admin-web/Dockerfile 使用参数化镜像配置
- 修改 clients/Dockerfile 支持客户端多环境配置参数
- 所有 Dockerfile 现在使用 ARG 参数进行灵活配置

feat(nginx): 优化 Nginx 配置支持动态端口代理

- 更新 Nginx 配置文件使用环境变量定义监听端口
- 配置三个独立的服务端口分别处理客户端、管理后台和服务器API
- 添加完整的代理头信息设置以支持正确的请求转发
- 使用 Nginx 环境变量实现灵活的服务间通信

feat(deploy): 完善 docker-compose.yml 的环境变量集成

- 更新 docker-compose.yml 文件以使用新的环境变量配置
- 配置服务健康检查使用动态端口
- 设置 Nginx 容器环境变量以支持模板化配置
- 修复服务间通信端口使用环境变量替代硬编码值
2026-05-09 18:03:38 +08:00
2026-05-09 16:40:29 +08:00
2026-05-09 16:40:29 +08:00
2026-05-09 16:40:29 +08:00
2026-05-09 16:40:29 +08:00
2026-05-09 16:40:29 +08:00

次元取景器

为 Coser 和摄影师打造的二次元取景地发现与分享平台

项目结构

├── clients/         # 用户端 — uni-app Vue3 (HBuilderX 项目 + Pinia)
├── server/          # 服务端 — Python (FastAPI + SQLAlchemy 2.x)
│   └── app/admin/   # 管理端 — sqladmin(挂载在 FastAPI 上)
├── docker-compose.yml
└── docs.md          # 产品功能规划文档

技术栈

层级 技术
用户端 uni-app Vue3 (HBuilderX) · Pinia · 高德地图
服务端 FastAPI · SQLAlchemy 2.x · Alembic · PostgreSQL + PostGIS · Redis
管理端 sqladmin(基于 FastAPI
存储 MinIOS3 兼容)
容器 Docker ComposeNginx / PostgreSQL / Redis / MinIO

Docker Compose 一次部署

项目已支持一次启动后端、管理端、用户端和基础设施:

docker-compose up -d --build

默认访问地址:

除 Nginx 网关外,后端、PostgreSQL、Redis、MinIO 和前端静态容器都只在 Docker 内部网络通信,不绑定宿主机端口。

默认数据库、Redis、MinIO 和端口可以通过环境变量覆盖,常用变量如下:

POSTGRES_USER=shiran
POSTGRES_PASSWORD=zxh2488252513
POSTGRES_DB=ciyuan_viewfinder
CLIENT_WEB_PORT=5173
ADMIN_WEB_PORT=5174
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
SECRET_KEY=change-me-before-production
TENCENT_MAP_KEY=

后端容器启动时会执行应用内启动迁移逻辑。用户端 H5 和管理前端会在镜像构建阶段生成静态文件,并由 nginx 托管。

本地开发

1. 启动基础设施

docker-compose up -d postgres redis minio

这会启动 PostgreSQL(含 PostGIS)、Redis 和 MinIO。

2. 启动服务端

cd server

# 创建虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
# source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 复制并编辑环境变量
cp .env.example .env

# 执行数据库迁移
alembic upgrade head

# 启动开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

API 文档:http://localhost:8000/docs 管理后台:http://localhost:8000/admin

3. 启动用户端 HBuilderX

使用 HBuilderX 打开 clients/ 目录,安装 Pinia 依赖后运行:

cd clients
npm install

然后在 HBuilderX 中选择 运行 → 运行到浏览器 / 运行到小程序模拟器。

也可以构建 H5

cd clients
npm install
npm run build:h5

功能阶段

阶段 内容
MVP(阶段 1 登录注册、地图发现、地点详情、上传地点、我的
阶段 2 评论评分、标签筛选、搜索
阶段 3 约拍广场、报名匹配、站内私信
阶段 4 活动发布与报名
阶段 5 商业化(推广位、会员)

开发约定

  • 服务端 API 前缀:/api/v1/
  • 所有 UGC 内容需审核(audit_statuspending → approved / rejected
  • 前端统一请求封装,自动携带 Token、统一错误处理
  • 管理端使用 RBACadmin / moderator / user
S
Description
次元取景器
Readme 645 KiB
Languages
Vue 48.1%
Python 40.6%
HTML 3.5%
JavaScript 3%
TypeScript 2.3%
Other 2.4%