2025-11-18 18:29:15 +08:00
|
|
|
|
# Docker 部署
|
|
|
|
|
|
|
|
|
|
|
|
使用 Docker 部署 Message Nest,支持多种配置方式。
|
|
|
|
|
|
|
|
|
|
|
|
::: tip 推荐指数
|
|
|
|
|
|
🍀🍀🍀🍀🍀 最推荐的部署方式
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
## 镜像源
|
|
|
|
|
|
|
2026-01-16 08:50:08 +08:00
|
|
|
|
Message Nest 使用 GitHub Container Registry 托管镜像:
|
2025-11-18 18:29:15 +08:00
|
|
|
|
|
2026-01-16 08:50:08 +08:00
|
|
|
|
- **镜像地址**: `ghcr.io/engigu/message-nest:latest`
|
2025-11-18 18:29:15 +08:00
|
|
|
|
|
|
|
|
|
|
## 方式一:挂载配置文件
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 准备配置文件
|
|
|
|
|
|
|
|
|
|
|
|
新建 `conf/app.ini` 文件:
|
|
|
|
|
|
|
|
|
|
|
|
```ini
|
|
|
|
|
|
[app]
|
|
|
|
|
|
JwtSecret = message-nest
|
|
|
|
|
|
LogLevel = INFO
|
|
|
|
|
|
|
|
|
|
|
|
[server]
|
|
|
|
|
|
RunMode = release
|
|
|
|
|
|
; docker模式下端口配置文件中只能为8000
|
|
|
|
|
|
HttpPort = 8000
|
|
|
|
|
|
ReadTimeout = 60
|
|
|
|
|
|
WriteTimeout = 60
|
2026-01-16 09:00:57 +08:00
|
|
|
|
; 是否使用embed打包的静态资源
|
|
|
|
|
|
; 如果运行release打包后的应用,请注释这个设置。
|
|
|
|
|
|
; 如果取消这个注释,只会单独运行api服务,前端页面需要到web目录手动npm run dev, 运行前端服务
|
2025-11-18 18:29:15 +08:00
|
|
|
|
; EmbedHtml = disable
|
2026-01-16 09:00:57 +08:00
|
|
|
|
; URL路径前缀,用于子路径部署,如:/message
|
|
|
|
|
|
; UrlPrefix = /message
|
2025-11-18 18:29:15 +08:00
|
|
|
|
|
|
|
|
|
|
[database]
|
|
|
|
|
|
; 关闭SQL打印
|
|
|
|
|
|
; SqlDebug = enable
|
|
|
|
|
|
|
|
|
|
|
|
; Type = sqlite
|
|
|
|
|
|
Type = mysql
|
|
|
|
|
|
User = root
|
|
|
|
|
|
Password = Aa123456
|
|
|
|
|
|
Host = vm.server
|
|
|
|
|
|
Port = 3308
|
|
|
|
|
|
Name = yourDbName
|
|
|
|
|
|
TablePrefix = message_
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
::: warning 端口限制
|
|
|
|
|
|
Docker模式下,配置文件中的端口只能为8000,通过 `-p` 参数映射到宿主机端口。
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 拉取镜像
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker pull ghcr.io/engigu/message-nest:latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 启动容器
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-01-16 08:50:08 +08:00
|
|
|
|
# 测试运行
|
2025-11-18 22:47:46 +08:00
|
|
|
|
docker run --rm -ti \
|
|
|
|
|
|
-p 8000:8000 \
|
|
|
|
|
|
-v /your/path/conf:/app/conf \
|
|
|
|
|
|
ghcr.io/engigu/message-nest:latest
|
|
|
|
|
|
|
2026-01-16 08:50:08 +08:00
|
|
|
|
# 正式运行
|
2025-11-18 22:47:46 +08:00
|
|
|
|
docker run -d \
|
2025-11-18 18:29:15 +08:00
|
|
|
|
-p 8000:8000 \
|
|
|
|
|
|
-v /your/path/conf:/app/conf \
|
|
|
|
|
|
ghcr.io/engigu/message-nest:latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 方式二:环境变量(推荐)
|
|
|
|
|
|
|
|
|
|
|
|
::: tip 推荐
|
|
|
|
|
|
这是最简单的部署方式,无需准备配置文件。
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
### 环境变量说明
|
|
|
|
|
|
|
|
|
|
|
|
| 变量 | 说明 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| JWT_SECRET | jwt秘钥,可选,默认为message-nest |
|
|
|
|
|
|
| LOG_LEVEL | 日志等级,可选,默认为INFO,DEBUG/INFO/ERROR |
|
|
|
|
|
|
| RUN_MODE | 运行模式,可选,默认release,为debug将自动添加跨域 |
|
2026-01-16 09:00:57 +08:00
|
|
|
|
| URL_PREFIX | URL路径前缀,用于子路径部署,如:/message |
|
2025-11-18 18:29:15 +08:00
|
|
|
|
| DB_TYPE | 数据库类型,sqlite/mysql。默认为sqlite,存储路径为conf/database.db |
|
|
|
|
|
|
| MYSQL_HOST | mysql-host,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| MYSQL_PORT | mysql端口,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| MYSQL_USER | mysql用户名,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| MYSQL_PASSWORD | mysql数据库密码,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| MYSQL_DB | mysql数据库名字,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| MYSQL_TABLE_PREFIX | mysql数据表前缀,DB_TYPE=mysql必填 |
|
|
|
|
|
|
| SSL | 是否开启SSL |
|
|
|
|
|
|
| SQL_DEBUG | 是否打印SQL,可选,默认关,设置enable为开启 |
|
|
|
|
|
|
|
|
|
|
|
|
### 使用 MySQL
|
|
|
|
|
|
|
2026-01-07 15:34:19 +08:00
|
|
|
|
::: warning 重要
|
|
|
|
|
|
使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
2025-11-18 18:29:15 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
docker run -d \
|
|
|
|
|
|
-p 8000:8000 \
|
2026-01-07 15:34:19 +08:00
|
|
|
|
-e DB_TYPE=mysql \
|
2025-11-18 18:29:15 +08:00
|
|
|
|
-e MYSQL_HOST=192.168.64.133 \
|
|
|
|
|
|
-e MYSQL_PORT=3308 \
|
|
|
|
|
|
-e MYSQL_USER=root \
|
|
|
|
|
|
-e MYSQL_PASSWORD=Aa123456 \
|
|
|
|
|
|
-e MYSQL_DB=test_11 \
|
|
|
|
|
|
-e MYSQL_TABLE_PREFIX=message_ \
|
|
|
|
|
|
--name message-nest \
|
|
|
|
|
|
ghcr.io/engigu/message-nest:latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 使用 SQLite
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker run -d \
|
|
|
|
|
|
-p 8000:8000 \
|
|
|
|
|
|
-v /your/path/database.db:/app/conf/database.db \
|
|
|
|
|
|
--name message-nest \
|
|
|
|
|
|
ghcr.io/engigu/message-nest:latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 访问服务
|
|
|
|
|
|
|
|
|
|
|
|
启动后访问 `http://localhost:8000`
|
|
|
|
|
|
|
|
|
|
|
|
- 默认账号:`admin`
|
|
|
|
|
|
- 默认密码:`123456`
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
### 容器无法启动
|
|
|
|
|
|
|
|
|
|
|
|
1. 检查端口是否被占用
|
|
|
|
|
|
2. 检查数据库连接配置
|
|
|
|
|
|
3. 查看容器日志:`docker logs message-nest`
|
|
|
|
|
|
|
|
|
|
|
|
### 数据持久化
|
|
|
|
|
|
|
|
|
|
|
|
使用SQLite时,记得挂载数据库文件:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
-v /your/path/database.db:/app/conf/database.db
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 查看日志
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 查看实时日志
|
|
|
|
|
|
docker logs -f message-nest
|
|
|
|
|
|
|
|
|
|
|
|
# 查看最近100行日志
|
|
|
|
|
|
docker logs --tail 100 message-nest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 停止和删除容器
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 停止容器
|
|
|
|
|
|
docker stop message-nest
|
|
|
|
|
|
|
|
|
|
|
|
# 删除容器
|
|
|
|
|
|
docker rm message-nest
|
|
|
|
|
|
```
|