Skip to content

Latest commit

 

History

History
383 lines (298 loc) · 7.63 KB

File metadata and controls

383 lines (298 loc) · 7.63 KB

Docker 手动启动指南(新手版)

一个一个启动,复制粘贴即可

前置准备

# 创建数据存储目录
mkdir -p /opt/know-engine/data/{mysql,redis,elasticsearch,neo4j,minio,xxl-job}

# 进入项目目录
cd /opt/know-engine

第1步:启动 MySQL

docker run -d \
  --name know-engine-mysql \
  --restart unless-stopped \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=know_engine \
  -e MYSQL_USER=know_engine \
  -e MYSQL_PASSWORD=know_engine \
  -e TZ=Asia/Shanghai \
  -v /opt/know-engine/data/mysql:/var/lib/mysql \
  -v $(pwd)/src/main/resources/sql:/docker-entrypoint-initdb.d \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

等待启动:

# 等待 10 秒
sleep 10

# 检查是否启动成功
docker ps | grep mysql

# 测试连接
docker exec know-engine-mysql mysql -u know_engine -pknow_engine -e "SELECT 1"

账号信息:

  • 用户名:know_engine
  • 密码:know_engine
  • 端口:3306

第2步:启动 Redis

docker run -d \
  --name know-engine-redis \
  --restart unless-stopped \
  -p 6379:6379 \
  -e TZ=Asia/Shanghai \
  -v /opt/know-engine/data/redis:/data \
  redis:7-alpine \
  redis-server --requirepass knowengine

等待启动:

# 等待 3 秒
sleep 3

# 检查是否启动成功
docker ps | grep redis

# 测试连接
docker exec know-engine-redis redis-cli -a knowengine ping

账号信息:

  • 密码:knowengine
  • 端口:6379

第3步:启动 Elasticsearch

docker run -d
--name know-engine-elasticsearch
--restart unless-stopped
-p 9200:9200
-p 9300:9300
-e discovery.type=single-node
-e xpack.security.enabled=false
-e xpack.security.http.ssl.enabled=false
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
-e TZ=Asia/Shanghai
-v /opt/know-engine/data/elasticsearch:/usr/share/elasticsearch/data
elasticsearch:8.11.0 等待启动:

# 等待 15 秒(ES 启动较慢)
sleep 15

# 检查是否启动成功
docker ps | grep elasticsearch

# 测试连接
curl http://localhost:9200

访问地址:

  • API:http://你的服务器IP:9200
  • 无需账号密码(已关闭安全认证)

第4步:启动 Neo4j

docker run -d \
  --name know-engine-neo4j \
  --restart unless-stopped \
  -p 7474:7474 \
  -p 7687:7687 \
  -e NEO4J_AUTH=neo4j/neo4j666 \
  -e NEO4J_PLUGINS='["apoc"]' \
  -e NEO4J_dbms_security_procedures_unrestricted="apoc.*" \
  -e NEO4J_server_memory_heap_initial__size=512m \
  -e NEO4J_server_memory_heap_max__size=512m \
  -e TZ=Asia/Shanghai \
  -v /opt/know-engine/data/neo4j/data:/data \
  -v /opt/know-engine/data/neo4j/logs:/logs \
  neo4j:5-community

等待启动:

# 等待 15 秒
sleep 15

# 检查是否启动成功
docker ps | grep neo4j

# 测试连接
curl http://localhost:7474

账号信息:

  • 用户名:neo4j
  • 密码:neo4j666
  • Web UI:http://你的服务器IP:7474
  • Bolt 端口:7687

第5步:启动 MinIO

docker run -d \
  --name know-engine-minio \
  --restart unless-stopped \
  -p 9002:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=minioadmin \
  -e MINIO_ROOT_PASSWORD=minioadmin \
  -e TZ=Asia/Shanghai \
  -v /opt/know-engine/data/minio:/data \
  minio/minio:RELEASE.2025-04-22T22-12-26Z \
  server /data --console-address ":9001"

等待启动:

# 等待 5 秒
sleep 5

# 检查是否启动成功
docker ps | grep minio

# 测试连接
curl http://localhost:9000/minio/health/live

账号信息:

  • 用户名:minioadmin
  • 密码:minioadmin
  • API 端口:9000
  • Web UI:http://你的服务器IP:9001

初始化 Bucket:

  1. 打开浏览器访问 http://你的服务器IP:9001
  2. 登录:minioadmin / minioadmin
  3. 点击 "Create Bucket"
  4. 输入名称:know-engine
  5. 点击 "Create Bucket" 完成

第6步:启动 XXL-Job Admin

# 注意:需要先创建 xxl_job 数据库
# 进入 MySQL 创建数据库
docker exec know-engine-mysql mysql -u root -p123456 -e "CREATE DATABASE IF NOT EXISTS xxl_job DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 启动 XXL-Job
docker run -d \
  --name know-engine-xxl-job-admin \
  --restart unless-stopped \
  -p 8080:8080 \
  -e SPRING_DATASOURCE_URL="jdbc:mysql://know-engine-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" \
  -e SPRING_DATASOURCE_USERNAME=know_engine \
  -e SPRING_DATASOURCE_PASSWORD=know_engine \
  -e TZ=Asia/Shanghai \
  -v /opt/know-engine/data/xxl-job:/data/applogs \
  --link know-engine-mysql:mysql \
  xuxueli/xxl-job-admin:2.4.0

等待启动:

# 等待 10 秒
sleep 10

# 检查是否启动成功
docker ps | grep xxl-job

# 测试连接
curl http://localhost:8080/xxl-job-admin

访问地址:

  • Web UI:http://你的服务器IP:8080/xxl-job-admin
  • 默认账号:admin
  • 默认密码:123456

查看所有服务状态

# 查看所有运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 查看某个服务的日志
docker logs know-engine-mysql
docker logs know-engine-redis
docker logs know-engine-elasticsearch
docker logs know-engine-neo4j
docker logs know-engine-minio
docker logs know-engine-xxl-job-admin

停止所有服务

# 停止单个服务
docker stop know-engine-mysql
docker stop know-engine-redis
docker stop know-engine-elasticsearch
docker stop know-engine-neo4j
docker stop know-engine-minio
docker stop know-engine-xxl-job-admin

# 删除单个容器(停止后才能删除)
docker rm know-engine-mysql
docker rm know-engine-redis
docker rm know-engine-elasticsearch
docker rm know-engine-neo4j
docker rm know-engine-minio
docker rm know-engine-xxl-job-admin

重启服务

# 重启单个服务
docker restart know-engine-mysql
docker restart know-engine-redis
docker restart know-engine-elasticsearch
docker restart know-engine-neo4j
docker restart know-engine-minio
docker restart know-engine-xxl-job-admin

常见问题

Q1: 端口被占用怎么办?

# 查看哪个进程占用了端口
lsof -i :3306
netstat -tlnp | grep 3306

# 修改端口映射,比如把 MySQL 改为 13306
docker run -d \
  --name know-engine-mysql \
  -p 13306:3306 \
  ... 其他参数不变 ...

Q2: 容器启动失败怎么办?

# 查看容器日志
docker logs know-engine-mysql

# 查看容器详细信息
docker inspect know-engine-mysql

# 进入容器排查问题
docker exec -it know-engine-mysql /bin/bash

Q3: 如何更新镜像?

# 拉取最新镜像
docker pull mysql:8.0

# 停止并删除旧容器
docker stop know-engine-mysql
docker rm know-engine-mysql

# 用新镜像重新创建容器(数据不会丢失,因为有 volume)
docker run -d \
  --name know-engine-mysql \
  ... 其他参数不变 ...

Q4: 如何备份数据?

# 备份 MySQL
docker exec know-engine-mysql mysqldump -u root -proot123456 know_engine > backup.sql

# 备份所有数据目录
tar -czf know-engine-data-backup.tar.gz /opt/know-engine/data/

本地连接配置

在本地电脑的 application-dev.yml 中,将所有 你的服务器IP 替换为实际的服务器 IP 地址。

例如,如果服务器 IP 是 47.104.64.223

spring:
  datasource:
    url: jdbc:mysql://47.104.64.223:3306/know_engine
  data:
    redis:
      host: 47.104.64.223

elasticsearch:
  host: http://47.104.64.223:9200

neo4j:
  uri: bolt://47.104.64.223:7687

minio:
  url: http://47.104.64.223:9000

xxl:
  job:
    admin:
      addresses: http://47.104.64.223:8080/xxl-job-admin