2025-11-18 18:29:15 +08:00
|
|
|
|
# Docker Compose 部署
|
|
|
|
|
|
|
|
|
|
|
|
使用 Docker Compose 编排部署 Message Nest。
|
|
|
|
|
|
|
|
|
|
|
|
::: tip 推荐指数
|
|
|
|
|
|
🍀🍀🍀🍀🍀 适合生产环境,便于管理
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
## 方式一:挂载配置文件
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 准备配置文件
|
|
|
|
|
|
|
|
|
|
|
|
创建 `conf/app.ini`,内容参考 [Docker部署](/deployment/docker#_1-准备配置文件)。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 创建 docker-compose.yml
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
version: "3.7"
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
|
|
message-nest:
|
2025-11-18 22:47:46 +08:00
|
|
|
|
image: ghcr.io/engigu/message-nest:latest
|
2025-11-18 18:29:15 +08:00
|
|
|
|
container_name: message-nest
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- ./conf:/app/conf
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 文件目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
.
|
|
|
|
|
|
├── conf
|
|
|
|
|
|
│ └── app.ini
|
|
|
|
|
|
└── docker-compose.yml
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 启动服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 测试运行
|
|
|
|
|
|
docker-compose up
|
|
|
|
|
|
|
|
|
|
|
|
# 正式运行(后台)
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 方式二:环境变量(推荐)
|
|
|
|
|
|
|
|
|
|
|
|
### 使用 MySQL
|
|
|
|
|
|
|
2026-01-07 15:34:19 +08:00
|
|
|
|
::: warning 重要
|
|
|
|
|
|
使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
2025-11-18 18:29:15 +08:00
|
|
|
|
创建 `docker-compose.yml`:
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
version: "3.7"
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
|
|
message-nest:
|
2025-11-18 22:47:46 +08:00
|
|
|
|
image: ghcr.io/engigu/message-nest:latest
|
2025-11-18 18:29:15 +08:00
|
|
|
|
container_name: message-nest
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
|
environment:
|
2026-01-07 15:34:19 +08:00
|
|
|
|
- DB_TYPE=mysql
|
2025-11-18 18:29:15 +08:00
|
|
|
|
- MYSQL_HOST=192.168.64.133
|
|
|
|
|
|
- MYSQL_PORT=3308
|
|
|
|
|
|
- MYSQL_USER=root
|
|
|
|
|
|
- MYSQL_PASSWORD=Aa123456
|
|
|
|
|
|
- MYSQL_DB=test_11
|
|
|
|
|
|
- MYSQL_TABLE_PREFIX=message_
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 使用 SQLite
|
|
|
|
|
|
|
|
|
|
|
|
创建 `docker-compose.yml`:
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
version: "3.7"
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
|
|
message-nest:
|
2025-11-18 22:47:46 +08:00
|
|
|
|
image: ghcr.io/engigu/message-nest:latest
|
2025-11-18 18:29:15 +08:00
|
|
|
|
container_name: message-nest
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- ./data/database.db:/app/conf/database.db
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 启动服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 正式运行
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 完整示例:MySQL + Message Nest
|
|
|
|
|
|
|
|
|
|
|
|
如果你还没有MySQL,可以使用以下配置同时部署MySQL和Message Nest:
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
version: "3.7"
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
|
|
mysql:
|
|
|
|
|
|
image: mysql:8.0
|
|
|
|
|
|
container_name: message-nest-mysql
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
environment:
|
|
|
|
|
|
- MYSQL_ROOT_PASSWORD=Aa123456
|
|
|
|
|
|
- MYSQL_DATABASE=message_nest
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- mysql-data:/var/lib/mysql
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "3306:3306"
|
|
|
|
|
|
|
|
|
|
|
|
message-nest:
|
2025-11-18 22:47:46 +08:00
|
|
|
|
image: ghcr.io/engigu/message-nest:latest
|
2025-11-18 18:29:15 +08:00
|
|
|
|
container_name: message-nest
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
- mysql
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
|
environment:
|
2026-01-07 15:34:19 +08:00
|
|
|
|
- DB_TYPE=mysql
|
2025-11-18 18:29:15 +08:00
|
|
|
|
- MYSQL_HOST=mysql
|
|
|
|
|
|
- MYSQL_PORT=3306
|
|
|
|
|
|
- MYSQL_USER=root
|
|
|
|
|
|
- MYSQL_PASSWORD=Aa123456
|
|
|
|
|
|
- MYSQL_DB=message_nest
|
|
|
|
|
|
- MYSQL_TABLE_PREFIX=message_
|
|
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
mysql-data:
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 常用命令
|
|
|
|
|
|
|
|
|
|
|
|
### 启动服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 前台启动(查看日志)
|
|
|
|
|
|
docker-compose up
|
|
|
|
|
|
|
|
|
|
|
|
# 后台启动
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 查看日志
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 查看所有服务日志
|
|
|
|
|
|
docker-compose logs
|
|
|
|
|
|
|
|
|
|
|
|
# 查看特定服务日志
|
|
|
|
|
|
docker-compose logs message-nest
|
|
|
|
|
|
|
|
|
|
|
|
# 实时查看日志
|
|
|
|
|
|
docker-compose logs -f message-nest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 停止服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 停止服务
|
|
|
|
|
|
docker-compose stop
|
|
|
|
|
|
|
|
|
|
|
|
# 停止并删除容器
|
|
|
|
|
|
docker-compose down
|
|
|
|
|
|
|
|
|
|
|
|
# 停止并删除容器和数据卷
|
|
|
|
|
|
docker-compose down -v
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 重启服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 重启所有服务
|
|
|
|
|
|
docker-compose restart
|
|
|
|
|
|
|
|
|
|
|
|
# 重启特定服务
|
|
|
|
|
|
docker-compose restart message-nest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 更新镜像
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 拉取最新镜像
|
|
|
|
|
|
docker-compose pull
|
|
|
|
|
|
|
|
|
|
|
|
# 重新创建容器
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 访问服务
|
|
|
|
|
|
|
|
|
|
|
|
启动后访问 `http://localhost:8000`
|
|
|
|
|
|
|
|
|
|
|
|
- 默认账号:`admin`
|
|
|
|
|
|
- 默认密码:`123456`
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
### 服务无法启动
|
|
|
|
|
|
|
|
|
|
|
|
1. 检查端口是否被占用
|
|
|
|
|
|
2. 检查配置是否正确
|
|
|
|
|
|
3. 查看日志:`docker-compose logs`
|
|
|
|
|
|
|
|
|
|
|
|
### MySQL连接失败
|
|
|
|
|
|
|
|
|
|
|
|
1. 确保MySQL服务已启动
|
|
|
|
|
|
2. 检查 `MYSQL_HOST` 是否正确(使用服务名)
|
|
|
|
|
|
3. 等待MySQL完全启动(约10-30秒)
|
|
|
|
|
|
|
|
|
|
|
|
### 数据持久化
|
|
|
|
|
|
|
|
|
|
|
|
使用volumes确保数据持久化:
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- ./data:/app/conf # 配置文件
|
|
|
|
|
|
- mysql-data:/var/lib/mysql # MySQL数据
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 修改配置后重启
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 修改配置文件或环境变量后
|
|
|
|
|
|
docker-compose down
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
```
|