Skip to content

Latest commit

 

History

History
200 lines (143 loc) · 4.29 KB

File metadata and controls

200 lines (143 loc) · 4.29 KB

KnowEngine Docker 部署指南

前置要求

  • Docker 20.10+
  • Docker Compose 2.0+
  • 至少 8GB 可用内存(ES + Neo4j + 应用)

快速启动

1. 构建应用 JAR 包

mvn clean package -DskipTests

2. 启动所有服务

# 后台启动
docker-compose up -d

# 查看启动日志
docker-compose logs -f know-engine

3. 访问服务

服务 地址 说明
KnowEngine 应用 http://localhost:8009 主应用
MySQL localhost:3306 数据库
Redis localhost:6379 缓存
Elasticsearch http://localhost:9200 搜索引擎
Neo4j Web UI http://localhost:7474 图数据库
MinIO Web UI http://localhost:9001 对象存储
XXL-Job Admin http://localhost:8080/xxl-job-admin 任务调度

配置说明

环境变量

所有配置都通过环境变量注入,可以在 docker-compose.yml 中修改:

environment:
  # 数据库
  SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/know_engine
  SPRING_DATASOURCE_USERNAME: know_engine
  SPRING_DATASOURCE_PASSWORD: know_engine

  # Redis
  SPRING_DATA_REDIS_HOST: redis
  SPRING_DATA_REDIS_PASSWORD: knowengine

  # Neo4j
  NEO4J_URI: bolt://neo4j:7687
  NEO4J_PASSWORD: neo4j666

  # Elasticsearch
  ELASTICSEARCH_HOST: http://elasticsearch:9200

  # MinIO
  MINIO_URL: http://minio:9000
  MINIO_ACCESS_KEY: minioadmin
  MINIO_SECRET_KEY: minioadmin

  # XXL-Job
  XXL_JOB_ADMIN_ADDRESSES: http://xxl-job-admin:8080/xxl-job-admin

默认账号密码

服务 用户名 密码
MySQL know_engine know_engine
MySQL Root root root123456
Redis - knowengine
Neo4j neo4j neo4j666
MinIO minioadmin minioadmin
XXL-Job Admin admin 123456

常用命令

# 查看所有容器状态
docker-compose ps

# 查看某个服务日志
docker-compose logs -f mysql
docker-compose logs -f elasticsearch

# 重启某个服务
docker-compose restart know-engine

# 停止所有服务
docker-compose down

# 停止并删除所有数据(谨慎!)
docker-compose down -v

# 进入容器
docker-compose exec mysql mysql -u know_engine -p
docker-compose exec redis redis-cli -a knowengine
docker-compose exec neo4j cypher-shell -u neo4j -p neo4j666

初始化 XXL-Job 数据库

XXL-Job 需要单独的数据库,首次启动前需要初始化:

# 进入 MySQL 容器
docker-compose exec mysql mysql -u root -proot123456

# 创建 XXL-Job 数据库
CREATE DATABASE IF NOT EXISTS xxl_job DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE xxl_job;

# 执行 XXL-Job 初始化脚本(从 XXL-Job 官方获取)
# 或者直接使用 Docker 自动初始化

MinIO 初始化 Bucket

首次启动后,需要创建 Bucket:

  1. 访问 http://localhost:9001
  2. 使用 minioadmin/minioadmin 登录
  3. 创建名为 know-engine 的 Bucket
  4. 设置 Bucket 策略为公开读取(或根据需要配置)

Elasticsearch 初始化

ES 启动后会自动创建索引,但需要确保开启了 KNN 向量检索:

# 检查 ES 状态
curl http://localhost:9200/_cluster/health

# 检查 KNN 插件
curl http://localhost:9200/_cat/plugins

Neo4j 初始化

确保 APOC 插件已安装:

# 访问 Neo4j Web UI
# http://localhost:7474
# 用户名: neo4j, 密码: neo4j666

# 检查 APOC 版本
CALL dbms.procedures() YIELD name WHERE name STARTS WITH 'apoc' RETURN name LIMIT 5

故障排查

服务启动失败

# 查看详细日志
docker-compose logs <service-name>

# 检查容器状态
docker-compose ps

# 检查资源使用
docker stats

内存不足

如果遇到 OOM,修改 docker-compose.yml 中的 JVM 参数:

know-engine:
  environment:
    JAVA_OPTS: "-Xms256m -Xmx512m"

端口冲突

修改 docker-compose.yml 中的端口映射:

mysql:
  ports:
    - "13306:3306"  # 改为其他端口

生产环境建议

  1. 修改默认密码:生产环境必须修改所有默认密码
  2. 配置持久化:确保数据卷正确挂载
  3. 资源限制:为每个服务设置 CPU 和内存限制
  4. 日志收集:配置日志收集到 ELK 或其他日志系统
  5. 备份策略:定期备份 MySQL、Neo4j、MinIO 数据
  6. 监控告警:配置 Prometheus + Grafana 监控