# 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: image: ghcr.io/engigu/message-nest:latest 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 ::: warning 重要 使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。 ::: 创建 `docker-compose.yml`: ```yaml version: "3.7" services: message-nest: image: ghcr.io/engigu/message-nest:latest container_name: message-nest restart: always ports: - "8000:8000" environment: - DB_TYPE=mysql - 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: image: ghcr.io/engigu/message-nest:latest 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: image: ghcr.io/engigu/message-nest:latest container_name: message-nest restart: always depends_on: - mysql ports: - "8000:8000" environment: - DB_TYPE=mysql - 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 ```