- Docker 20.10+
- Docker Compose 2.0+
- 至少 8GB 可用内存(ES + Neo4j + 应用)
mvn clean package -DskipTests# 后台启动
docker-compose up -d
# 查看启动日志
docker-compose logs -f know-engine| 服务 | 地址 | 说明 |
|---|---|---|
| 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 neo4j666XXL-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 自动初始化首次启动后,需要创建 Bucket:
- 访问 http://localhost:9001
- 使用 minioadmin/minioadmin 登录
- 创建名为
know-engine的 Bucket - 设置 Bucket 策略为公开读取(或根据需要配置)
ES 启动后会自动创建索引,但需要确保开启了 KNN 向量检索:
# 检查 ES 状态
curl http://localhost:9200/_cluster/health
# 检查 KNN 插件
curl http://localhost:9200/_cat/plugins确保 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" # 改为其他端口- 修改默认密码:生产环境必须修改所有默认密码
- 配置持久化:确保数据卷正确挂载
- 资源限制:为每个服务设置 CPU 和内存限制
- 日志收集:配置日志收集到 ELK 或其他日志系统
- 备份策略:定期备份 MySQL、Neo4j、MinIO 数据
- 监控告警:配置 Prometheus + Grafana 监控