Files

241 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

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
```