From d20870255b43e77800aa45a3f1cd795aa32fa315 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 Apr 2026 08:35:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=BA=AF=20Docker=20?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E9=83=A8=E7=BD=B2=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/.env.example | 2 ++ docker/README.md | 49 +++++++++++++++++++++++++++++ docker/docker-compose.yml | 50 +++++++++++++++++++++++++++++ docker/start.sh | 66 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 docker/.env.example create mode 100644 docker/README.md create mode 100644 docker/docker-compose.yml create mode 100644 docker/start.sh diff --git a/docker/.env.example b/docker/.env.example new file mode 100644 index 0000000..84fe604 --- /dev/null +++ b/docker/.env.example @@ -0,0 +1,2 @@ +# DeepSeek API Key (必需) +DEEPSEEK_API_KEY=your-api-key-here \ No newline at end of file diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..06c2e25 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,49 @@ +# OpenClaw Docker 部署 + +一键启动 OpenClaw 纯图数据库对话 Demo。 + +## 快速开始 + +```bash +cd docker +chmod +x start.sh +./start.sh + +# 或者直接使用 docker compose +docker compose up -d +``` + +## 前置要求 + +- Docker +- Docker Compose v2 (或 docker-compose) + +## 启动后 + +- Neo4j Browser: http://localhost:7474 +- 登录用户: neo4j / openclaw123 +- 应用运行在终端交互模式 + +## 停止 + +```bash +cd docker +docker compose down +``` + +## 配置 + +编辑 `.env` 文件修改 DeepSeek API Key: +``` +DEEPSEEK_API_KEY=sk-xxx +``` + +## 文件说明 + +``` +docker/ +├── docker-compose.yml # 容器编排 (Neo4j + 应用) +├── start.sh # 一键启动脚本 +├── .env.example # 环境变量模板 +└── README.md # 本文件 +``` \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..2ff3461 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.8' + +services: + neo4j: + image: neo4j:5 + container_name: openclaw-neo4j + ports: + - "7474:7474" + - "7687:7687" + environment: + - NEO4J_AUTH=neo4j/openclaw123 + - NEO4J_PLUGINS=["apoc"] + - NEO4J_server_memory_heap_initial__size=256m + - NEO4J_server_memory_heap_max__size=512m + volumes: + - neo4j_data:/data + - neo4j_logs:/logs + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "return cypher-shell -u neo4j -p openclaw123 'RETURN 1' 2>/dev/null || exit 1"] + interval: 30s + timeout: 10s + retries: 5 + + openclaw: + image: python:3.11-slim + container_name: openclaw-app + ports: + - "8000:8000" + environment: + - NEO4J_URI=bolt://neo4j:7687 + - NEO4J_USER=neo4j + - NEO4J_PASSWORD=openclaw123 + - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-your-api-key-here} + volumes: + - ..:/app + - ../openclaw_neo4j_demo.py:/app/openclaw_neo4j_demo.py + working_dir: /app + command: > + sh -c "pip install --quiet neo4j openai && python openclaw_neo4j_demo.py" + stdin_open: true + tty: true + depends_on: + neo4j: + condition: service_healthy + restart: unless-stopped + +volumes: + neo4j_data: + neo4j_logs: \ No newline at end of file diff --git a/docker/start.sh b/docker/start.sh new file mode 100644 index 0000000..55ead46 --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# OpenClaw Docker 一键启动脚本 + +set -e + +echo "========================================" +echo "OpenClaw Docker 一键启动" +echo "========================================" + +# 检查 Docker 和 Docker Compose +if ! command -v docker &> /dev/null; then + echo "Error: Docker 未安装" + exit 1 +fi + +# 检查 docker compose 插件或 docker-compose +DOCKER_COMPOSE="docker compose" +if ! docker compose version &> /dev/null; then + DOCKER_COMPOSE="docker-compose" + if ! command -v docker-compose &> /dev/null; then + echo "Error: Docker Compose 未安装" + exit 1 + fi +fi + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_DIR="$(dirname "$SCRIPT_DIR")" + +cd "$PROJECT_DIR/docker" + +# 检查 .env 文件 +if [ ! -f .env ]; then + echo "" + read -p "请输入 DeepSeek API Key: " user_api_key + [ -z "$user_api_key" ] && user_api_key="your-api-key-here" + + cat > .env << EOF +DEEPSEEK_API_KEY=${user_api_key} +EOF + echo " 已保存配置到 .env" +fi + +# 启动服务 +echo "" +echo "启动 Neo4j 和 OpenClaw 应用..." +$DOCKER_COMPOSE up -d + +# 等待 Neo4j 就绪 +echo "等待 Neo4j 启动..." +sleep 10 + +# 检查状态 +echo "" +echo "========================================" +echo "启动完成!" +echo "========================================" +echo "" +echo "服务状态:" +$DOCKER_COMPOSE ps +echo "" +echo "访问地址:" +echo " Neo4j Browser: http://localhost:7474" +echo " Neo4j 用户: neo4j / openclaw123" +echo "" +echo "停止服务: docker compose down" +echo "查看日志: docker compose logs -f" \ No newline at end of file