Skip to content

Commit bf4842f

Browse files
authored
Merge pull request #282 from dianso/dev
整理文档格式: README.md, docker-compose.yml
2 parents 0c8c035 + a59d60f commit bf4842f

File tree

2 files changed

+97
-132
lines changed

2 files changed

+97
-132
lines changed

README.md

+91-124
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,66 @@
1-
# Moments - 极简朋友圈
1+
# 🌟 Moments - 极简朋友圈
22

33
[![release](https://img.shields.io/badge/release-更新记录-blue)](https://github.com/kingwrcy/moments/releases)
44
[![docker-release-status](https://img.shields.io/github/actions/workflow/status/kingwrcy/moments/docker-image-release.yml)](https://github.com/kingwrcy/moments/actions/workflows/docker-image-release.yml)
55
[![docker-pull](https://img.shields.io/docker/pulls/kingwrcy/moments)](https://hub.docker.com/repository/docker/kingwrcy/moments)
66
[![telegram-group](https://img.shields.io/badge/Telegram-group-blue)](https://t.me/simple_moments)
77
[![discussion](https://img.shields.io/badge/moments-论坛-blue)](https://discussion.mblog.club)
88

9-
从 v0.2.1 开始,使用 Golang 重写了服务端,目前已经基本实现了 v0.2.0 版本的功能,同时软件包体积也更小了。
9+
💡 **从 v0.2.1 开始,Moments 采用 Golang 重写服务端,包体积更小,功能更强!**
10+
🔍 **仍需 v0.2.0 版本?[点这里](https://github.com/kingwrcy/moments/blob/master/README.md)**
1011

11-
注意:如果你在找 v0.2.0 版本,请 [点击这里](https://github.com/kingwrcy/moments/blob/master/README.md)
12+
---
1213

13-
# 功能列表
14+
## 🎯 功能亮点
1415

15-
## 用户
16+
### 👤 用户系统
17+
- 🏠 **默认账号**`admin/a123456`,登录后可在后台修改
18+
- 👥 **支持多用户模式**,可控制是否允许注册
1619

17-
- 默认用户名和密码是 admin/a123456,登录后可以在后台修改
18-
- 多用户模式,可以在后台打开或关闭用户注册功能
20+
### 📝 Memo 记录
21+
- 🔖 **标签管理**,让内容更清晰
22+
- 🖼️ **支持图片上传**,可存储至本地或 S3
23+
- 🖼️ **自动生成缩略图**(目前仅支持本地上传)
24+
- 📝 **支持 Markdown 语法**,后续增加更多标签支持
25+
- ❤️ **点赞 & 评论**,可在后台控制评论功能
26+
- 🎵 **支持网易云音乐、B 站视频、外部链接嵌入**
27+
- 📖 **支持豆瓣读书 & 豆瓣电影引用**
1928

20-
## Memo
29+
### 🛠️ 其他功能
30+
- 📱 **完美适配移动端**
31+
- 🌙 **支持暗黑模式**
32+
-**回到顶部按钮**
33+
- 🗄️ **数据库采用 SQLite**,随时可备份
34+
- 🖼️ **支持自定义头图、头像、网站标题**
2135

22-
- 支持设置标签
23-
- 支持上传图片,可以上传到服务器,也可以在后台开启上传到 S3
24-
- 支持生成缩略图,但是目前只支持直接上传到服务器时生成缩略图,将在后续版本中支持上传到 S3 时生成缩略图
25-
- 支持 Markdown 语法,但是目前只适配了常用的几个标签,将在后续版本中支持更多的标签
26-
- 支持点赞
27-
- 支持评论,可以在后台打开或关闭评论功能
36+
---
2837

29-
## 其他
38+
## 🚀 快速上手
3039

31-
- 支持回到顶部按钮,PC 端和手机端都有
40+
### 🛠️ 环境变量
3241

33-
更多说明可以[点击这里查看](https://discussion.mblog.club/post/pto2hqoFzDKzZMpvoPZKYuP)
42+
Moments 支持以下 **环境变量** 进行配置:
3443

35-
# 使用教程
44+
| 变量名 | 说明 | 默认值 |
45+
|-----------------|---------------------|------------------------------------------------------|
46+
| `PORT` | 监听端口 | `3000` |
47+
| `JWT_KEY` | JWT 密钥 | **不填写则随机生成,重启后需重新登录** |
48+
| `DB` | SQLite 数据库存放目录 | `db.sqlite`(默认 `/app/data/db.sqlite`|
49+
| `UPLOAD_DIR` | 上传文件本地目录 | `upload`(默认 `/app/data/upload`|
50+
| `LOG_LEVEL` | 日志级别 | `info`(可选 `debug`|
51+
| `ENABLE_SWAGGER` | 启用 Swagger 文档 | `false`(可选 `true`,访问 `/swagger/index.html`|
3652

37-
## 环境变量
38-
39-
Moments 支持以下环境变量,可按需修改进行配置:
40-
41-
| 变量名 | 解释 | 默认值 |
42-
| ----------------- | --------------------- | ------------------------------------------------------ |
43-
| PORT | 监听端口 | 3000 |
44-
| JWT_KEY | JWT 密钥 | 不填写则每次启动时随机生成,每次重启后需要重新登录 |
45-
| DB | sqlite 数据库存放目录 | 工作目录下的 db.sqlite,/app/data/db.sqlite |
46-
| UPLOAD_DIR | 上传文件本地目录 | 工作目录下的 upload,/app/data/upload |
47-
| LOG_LEVEL | 日志级别 | info,可选 debug |
48-
| ENABLE_SWAGGER | 是否启用 swagger 文档 | false,可选 true,启用后可访问路径 /swagger/index.html |
49-
| ENABLE_SQL_OUTPUT | 是否启用 SQL 调试日志 | false |
50-
51-
除了直接配置环境变量外,还可以可选地在工作目录下创建 `.env` 文件,Moments 在启动时也会读取该文件来决定最终生效的配置,例如:
52-
53-
```
54-
JWT_KEY=
53+
**支持 `.env` 文件加载环境变量**,示例:
54+
```env
55+
JWT_KEY=your_secret_key
5556
LOG_LEVEL=info
5657
```
5758

58-
## 使用 Docker
59+
---
5960

60-
注意:需要将以下示例中的 `$JWT_KEY` 替换为你的真实 `JWT_KEY`,生成方式可[参考这里](#jwt_key-生成)
61-
62-
使用命令行启动容器:
61+
## 🐳 使用 Docker
6362

63+
🔹 **启动容器**(需替换 `$JWT_KEY`):
6464
```bash
6565
docker run -d \
6666
-e PORT=3000 \
@@ -70,14 +70,10 @@ docker run -d \
7070
--name moments \
7171
kingwrcy/moments:latest
7272
```
73+
📌 **持久化数据:** `/app/data` 挂载至 `/var/moments`
74+
📌 **可选:** `latest`(稳定版) 或 `dev`(开发版,功能前沿但相对不稳定)
7375

74-
注意:
75-
76-
- 容器默认的工作目录是 `/app/data`,所以示例中将 `/app/data` 目录挂载到主机的 `/var/moments` 目录,实现持久化数据的目的,可以按需修改
77-
- 示例中使用的是 `latest` 标签来拉取最新的发布版;也可以通过 `dev` 标签来拉取最新的开发版,通常开发版会包含最新的功能和问题修复,但是相对于发布版的稳定较差
78-
- 无论使用 `latest` 版本还是 `dev` 版本,我们都 _强烈建议将容器的数据持久化,并(定期或在升级前)备份到安全的介质中_
79-
80-
也可以使用 Docker Compose:
76+
### 📝 使用 Docker Compose
8177

8278
```yaml
8379
services:
@@ -94,130 +90,95 @@ services:
9490
- /var/moments:/app/data # 持久化数据到主机的 /var/moments 目录,可以按需修改
9591
```
9692
97-
## 使用可执行文件
98-
99-
首先在 [Release](https://github.com/kingwrcy/moments/releases) 列表根据自己的平台下载最新版本的可执行文件。
93+
---
10094
101-
例如以下是用于 `windows-amd64` 的文件:
95+
## 💻 可执行文件安装
10296
103-
| 文件名 | 说明 |
104-
| -------------------------------------------- | ---------------------------------------------- |
105-
| moments-windows-amd64-x.x.x.exe.zip | 包含可执行文件的压缩包,解压后可得到可执行文件 |
106-
| moments-windows-amd64-x.x.x.exe-checksum.txt | 包含对应可执行文件的 `MD5` 校验码 |
97+
🔽 **[下载最新版本](https://github.com/kingwrcy/moments/releases)**
10798
108-
下载并解压完成后,可以可选地检查可执行文件的校验码是否匹配,然后通过环境变量或 `.env` 文件进行配置,最后直接打开可执行文件即可。
99+
> 示例(Windows 版):
109100
110-
## JWT_KEY 生成
101+
| 文件名 | 说明 |
102+
|----------------------------------------------|----------------------------------------------|
103+
| `moments-windows-amd64-x.x.x.exe.zip` | **压缩包**,解压后可直接运行 |
104+
| `moments-windows-amd64-x.x.x.exe-checksum.txt` | `MD5` 校验码,验证文件完整性 |
111105

112-
### 使用 OpenSSL
106+
---
113107

114-
执行以下命令生成 (仅测试了 Linux):
108+
## 🔑 生成 JWT_KEY
115109

110+
📌 **方法 1:OpenSSL**
116111
```bash
117112
openssl rand -hex 32
118-
```
119-
120-
### 使用 SHA256
121-
122-
执行以下命令生成 (仅测试了 Linux):
113+
```
123114

115+
📌 **方法 2:SHA256**
124116
```bash
125117
echo $RANDOM | sha256sum
126-
```
127-
128-
### 在线生成
129-
130-
打开 [https://tool.lu/uuid](https://tool.lu/uuid) 生成不带 `-` 的 `UUID` 作为 `JWT_KEY`。
131-
132-
# 开发
118+
```
133119

134-
## 环境
120+
📌 **方法 3:在线生成**([点这里](https://tool.lu/uuid) 生成 UUID)
135121

136-
配置以下开发环境:
122+
---
137123

138-
- Go 1.22.5(或更高)
139-
- NodeJS 18(或更高)
140-
- PNPM 包管理工具
124+
## 🛠️ 开发
141125

142-
对于 `VSCode`,我们推荐安装以下插件:
126+
### 🔧 依赖环境
143127

144-
- eamodio.gitlens
145-
- esbenp.prettier-vscode
146-
- dbaeumer.vscode-eslint
147-
- Nuxtr.nuxt-vscode-extentions
148-
- golang.go
149-
- qwtel.sqlite-viewer
128+
📌 **后端:** `Go 1.22.5+`
129+
📌 **前端:** `NodeJS 18+`,推荐使用 `PNPM`
130+
📌 **VSCode 推荐插件:**
131+
- `gitlens`(Git 扩展)
132+
- `prettier`(代码格式化)
133+
- `eslint`(代码规范检查)
134+
- `golang`(Go 语言支持)
150135

151-
另外,也可以直接通过 `VSCode` 的 [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) 来启动配置好的开发环境。
136+
### 🏗️ 启动
152137

153-
## 启动
154-
155-
对于安装了 `make` 命令的用户,可以使用以下命令启动项目:
156-
157-
后端:
138+
#### 1️⃣ 使用 `make`(推荐)
158139

140+
后端:
159141
```bash
160-
# 进入项目根目录
161142
cd moments
162-
163-
# 编译并启动后端,注意此时的工作目录是项目根目录 moments
164143
make backend-dev
165144
```
166-
167-
单独创建一个终端,启动前端:
168-
145+
前端(新终端):
169146
```bash
170-
# 进入项目根目录
171147
cd moments
172-
173-
# 安装前端依赖
174148
make frontend-install
175-
176-
# 启动前端
177149
make frontend-dev
178150
```
179151

180-
如果没有 `make` 命令,也可以使用以下命令启动项目:
181-
182-
后端:
152+
#### 2️⃣ 手动运行
183153

154+
后端:
184155
```bash
185-
# 进入后端目录
186156
cd moments/backend
187-
188-
# 编译后端
189157
go build -ldflags="-X main.version=local -X main.commitId=local" -o ./dist/moments
190-
191-
# 启动后端,注意此时的工作目录是后端目录 moments/backend
192158
./dist/moments
193159
```
194-
195-
单独创建一个终端,启动前端:
196-
160+
前端:
197161
```bash
198-
# 进入前端目录
199162
cd moments/front
200-
201-
# 安装前端依赖
202163
pnpm install
203-
204-
# 启动前端
205164
pnpm run dev
206165
```
207166

208-
## 访问
167+
📍 启动后访问 `http://localhost:3000`
209168

210-
启动项目后可以通过 `http://localhost:3000` 来访问前端,并且开发环境的接口请求会通过前端代理转发到后端来避免跨域问题。
169+
---
211170

212-
# 其他版本
171+
## 🌐 其他版本
213172

214173
| 项目 | 演示地址 |
215-
| --------------------------------------------------------------- | -------------------------------------------------------------------- |
174+
|----------------------------------------------------------------|--------------------------------------------------------------------|
216175
| [RandallAnjie/moments](https://github.com/RandallAnjie/moments) | [https://moments.randallanjie.com](https://moments.randallanjie.com) |
217176

218-
# Contributors
177+
---
219178

220-
感谢这些贡献代码的朋友。
179+
## ❤️ 致谢 Contributors
180+
181+
感谢所有贡献者!🎉
221182

222183
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
223184
<!-- prettier-ignore-start -->
@@ -251,6 +212,12 @@ pnpm run dev
251212

252213
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
253214

254-
# Star History
215+
📌 **欢迎贡献!** 详情见 [all-contributors](https://github.com/all-contributors/all-contributors) 规范。
216+
217+
---
218+
219+
## ⭐ Star History
220+
221+
[![Star History](https://api.star-history.com/svg?repos=kingwrcy/moments&type=Date)](https://star-history.com/#kingwrcy/moments&Date)
255222

256-
[![Star History Chart](https://api.star-history.com/svg?repos=kingwrcy/moments&type=Date)](https://star-history.com/#kingwrcy/moments&Date)
223+
🔥 **如果你觉得 Moments 还不错,欢迎点个 Star!** 🚀

docker-compose.yml

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
version: '3'
21
services:
32
moments:
43
image: kingwrcy/moments:latest
4+
container_name: moments
5+
restart: always
56
environment:
6-
JWT_KEY: "BbYS93dHHfIC1cQR8rI6"
7+
PORT: 3000
8+
JWT_KEY: $JWT_KEY
79
ports:
8-
- "3000:3000"
10+
- 3000:3000
911
volumes:
10-
- moments-data:/app/data
11-
- /etc/localtime:/etc/localtime:ro
12-
- /etc/timezone:/etc/timezone:ro
13-
volumes:
14-
moments-data:
12+
- /var/moments:/app/data # 持久化数据到主机的 /var/moments 目录,可以按需修改

0 commit comments

Comments
 (0)