Rust + Axum + PostgreSQL 的开放代码知识共享平台。一个容器同时监听三组端口:
- A 端口:公开知识站点,首页、文章、标签、系列、模糊搜索、热度统计。
- B 端口:AI/API 查询入口,顶级页展示接口规范,
/search提供模糊检索和正则检索。 - C 端口:隐藏后台,登录路径由
.env的ADMIN_LOGIN_SUFFIX决定。 .env.example给出的端口示例为 A=38080,B=38081,C=38082,PostgreSQL=38084。
Copy-Item .env.example .env编辑 .env,至少替换 POSTGRES_PASSWORD、ADMIN_LOGIN_SUFFIX、ADMIN_ROOT_PASSWORD。运行配置没有内置端口默认值,缺少必要变量时 Compose 或应用会直接报错。
如果服务器访问 Docker Hub 不稳定,可以把 .env 里的 RUST_IMAGE、RUNTIME_IMAGE、POSTGRES_IMAGE 改成你信任的镜像源地址,业务代码不需要改。
docker compose up -d --build
清理本地构建中间产物:
python scripts/clean_build.py --build-release
PostgreSQL 数据、Markdown 原文、上传资源都会持久化在 ./data:
data/
postgres/
articles/
uploads/
文章支持 YAML 头部声明。没有声明也能上传,但建议使用固定格式:
--- title: Rust 部署笔记 description: Axum 服务、Docker Compose 与 PostgreSQL 的部署要点。 tags: [rust, docker, postgres] category: backend series: rust-platform status: published extra_links: - rel: stylesheet href: /uploads/article-extra.css extra_styles: | .article-prose strong { color: #0f766e; } buttons: - label: 查看仓库 href: https://github.com/ variant: primary --- # 正文 ```rust fn main() {}
渲染后的文章会自动链接固定资源:`/assets/fonts.css`、`/assets/site.css`、`/assets/app.js`、`/assets/icons.svg`。代码块带一键复制。
## API
- `GET /search?q=rust&limit=10`
- `GET /search?regex=rust|docker&limit=10`
- `GET /articles/{article_code}`
- `GET /tags`
- `GET /series`
## 后台
C 端口根路径不会暴露后台入口。登录地址由隐藏后缀组成:
```text
http://your-host:PORT_C/{ADMIN_LOGIN_SUFFIX}/login
后台支持上传 Markdown、在线编辑、预览发布效果、修改标题/标签/分类/系列/状态,并查看浏览数据。
后台的资源页可上传 CSS、图片、字体等文件,文件会保存到 data/uploads,公开访问路径为 /uploads/{文件名}。