From 25b8365cc7da20a3d11a8a5a091f115d7ec1a4c3 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Apr 2026 23:02:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=20-=20=E4=BC=98=E5=85=88=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E4=B8=AD=E5=AE=B9=E5=99=A8=E5=86=8D=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/install_neo4j_ubuntu.sh | 36 +++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/scripts/install_neo4j_ubuntu.sh b/scripts/install_neo4j_ubuntu.sh index 1c1cc74..fb7ed10 100755 --- a/scripts/install_neo4j_ubuntu.sh +++ b/scripts/install_neo4j_ubuntu.sh @@ -69,30 +69,40 @@ else # 如果 Docker 可用,使用 Docker 启动 Neo4j if command -v docker &> /dev/null; then - # 检查是否有已存在的容器 - EXISTING=$(docker ps -a --filter "name=neo4j" --format "{{.Names}}" | head -1) - if [ -n "$EXISTING" ]; then - echo " 找到已有 Neo4j 容器: $EXISTING" - docker start "$EXISTING" 2>/dev/null || true - # 尝试从环境变量获取密码 - NEO4J_AUTH=$(docker inspect "$EXISTING" --format '{{.Config.Env}}' 2>/dev/null | grep -o 'NEO4J_AUTH=[^ ]*' | cut -d'=' -f2) - if [ -n "$NEO4J_AUTH" ]; then - NEO4J_PASSWORD=$(echo "$NEO4J_AUTH" | cut -d'/' -f2) - fi + # 优先查找正在运行的容器 + RUNNING=$(docker ps --filter "name=neo4j" --format "{{.Names}}" 2>/dev/null | head -1) + STOPPED=$(docker ps -a --filter "name=neo4j" --format "{{.Names}}" 2>/dev/null | head -1) + + if [ -n "$RUNNING" ]; then + echo " 找到运行中的 Neo4j 容器: $RUNNING" + EXISTING="$RUNNING" + elif [ -n "$STOPPED" ]; then + echo " 找到已停止的 Neo4j 容器: $STOPPED" + docker start "$STOPPED" 2>/dev/null || true + sleep 3 + EXISTING="$STOPPED" else - # 生成随机密码 + # 没有已有容器,创建新的 NEO4J_PASS=$(openssl rand -hex 8 2>/dev/null || echo "openclaw$(date +%s)") docker run -d --name openclaw-neo4j \ -p 7474:7474 -p 7687:7687 \ -e NEO4J_AUTH=neo4j/${NEO4J_PASS} \ -e NEO4J_PLUGINS='["apoc"]' \ neo4j:5 || true + sleep 15 echo " Neo4j Docker 容器已启动" echo " 密码: $NEO4J_PASS" NEO4J_PASSWORD="$NEO4J_PASS" - - # 保存密码到文件 echo "$NEO4J_PASS" > "$PROJECT_DIR/.neo4j_pass" + EXISTING="openclaw-neo4j" + fi + + # 获取密码 + if [ -z "$NEO4J_PASSWORD" ]; then + NEO4J_AUTH=$(docker inspect "$EXISTING" --format '{{.Config.Env}}' 2>/dev/null | tr ' ' '\n' | grep NEO4J_AUTH | cut -d'=' -f2) + if [ -n "$NEO4J_AUTH" ]; then + NEO4J_PASSWORD=$(echo "$NEO4J_AUTH" | cut -d'/' -f2) + fi fi else echo " 无法安装 Neo4j,请手动安装或使用 Docker"