Skip to content

Docker Compose 部署

使用 Docker Compose 编排部署 Message Nest。

推荐指数

🍀🍀🍀🍀🍀 适合生产环境,便于管理

方式一:挂载配置文件

1. 准备配置文件

创建 conf/app.ini,内容参考 Docker部署

2. 创建 docker-compose.yml

yaml
version: "3.7"
services:

  message-nest:
    image: ghcr.io/engigu/message-nest:latest
    # 或使用 Docker Hub 镜像
    # image: 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

创建 docker-compose.yml

yaml
version: "3.7"
services:

  message-nest:
    image: ghcr.io/engigu/message-nest:latest
    # 或使用 Docker Hub 镜像
    # image: engigu/message-nest:latest
    container_name: message-nest
    restart: always
    ports:
      - "8000:8000"
    environment:
      - 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
    # 或使用 Docker Hub 镜像
    # image: 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
    # 或使用 Docker Hub 镜像
    # image: engigu/message-nest:latest
    container_name: message-nest
    restart: always
    depends_on:
      - mysql
    ports:
      - "8000:8000"
    environment:
      - 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

Released under the MIT License.