Files
2026-01-16 09:00:57 +08:00

174 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Docker 部署
使用 Docker 部署 Message Nest,支持多种配置方式。
::: tip 推荐指数
🍀🍀🍀🍀🍀 最推荐的部署方式
:::
## 镜像源
Message Nest 使用 GitHub Container Registry 托管镜像:
- **镜像地址**: `ghcr.io/engigu/message-nest:latest`
## 方式一:挂载配置文件
### 1. 准备配置文件
新建 `conf/app.ini` 文件:
```ini
[app]
JwtSecret = message-nest
LogLevel = INFO
[server]
RunMode = release
; docker模式下端口配置文件中只能为8000
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; 是否使用embed打包的静态资源
; 如果运行release打包后的应用,请注释这个设置。
; 如果取消这个注释,只会单独运行api服务,前端页面需要到web目录手动npm run dev, 运行前端服务
; EmbedHtml = disable
; URL路径前缀,用于子路径部署,如:/message
; UrlPrefix = /message
[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
# 测试运行
docker run --rm -ti \
-p 8000:8000 \
-v /your/path/conf:/app/conf \
ghcr.io/engigu/message-nest:latest
# 正式运行
docker run -d \
-p 8000:8000 \
-v /your/path/conf:/app/conf \
ghcr.io/engigu/message-nest:latest
```
## 方式二:环境变量(推荐)
::: tip 推荐
这是最简单的部署方式,无需准备配置文件。
:::
### 环境变量说明
| 变量 | 说明 |
|------|------|
| JWT_SECRET | jwt秘钥,可选,默认为message-nest |
| LOG_LEVEL | 日志等级,可选,默认为INFODEBUG/INFO/ERROR |
| RUN_MODE | 运行模式,可选,默认release,为debug将自动添加跨域 |
| URL_PREFIX | URL路径前缀,用于子路径部署,如:/message |
| DB_TYPE | 数据库类型,sqlite/mysql。默认为sqlite,存储路径为conf/database.db |
| MYSQL_HOST | mysql-hostDB_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
::: warning 重要
使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。
:::
```bash
docker run -d \
-p 8000:8000 \
-e DB_TYPE=mysql \
-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
```