mirror of
https://gitcode.com/JianFeeeee/TrulyMEM-TrueHumanMEM.git
synced 2026-10-15 12:15:32 +00:00
fix: 修复容器检测 - 优先查找运行中容器再获取密码
This commit is contained in:
@ -69,30 +69,40 @@ else
|
|||||||
|
|
||||||
# 如果 Docker 可用,使用 Docker 启动 Neo4j
|
# 如果 Docker 可用,使用 Docker 启动 Neo4j
|
||||||
if command -v docker &> /dev/null; then
|
if command -v docker &> /dev/null; then
|
||||||
# 检查是否有已存在的容器
|
# 优先查找正在运行的容器
|
||||||
EXISTING=$(docker ps -a --filter "name=neo4j" --format "{{.Names}}" | head -1)
|
RUNNING=$(docker ps --filter "name=neo4j" --format "{{.Names}}" 2>/dev/null | head -1)
|
||||||
if [ -n "$EXISTING" ]; then
|
STOPPED=$(docker ps -a --filter "name=neo4j" --format "{{.Names}}" 2>/dev/null | head -1)
|
||||||
echo " 找到已有 Neo4j 容器: $EXISTING"
|
|
||||||
docker start "$EXISTING" 2>/dev/null || true
|
if [ -n "$RUNNING" ]; then
|
||||||
# 尝试从环境变量获取密码
|
echo " 找到运行中的 Neo4j 容器: $RUNNING"
|
||||||
NEO4J_AUTH=$(docker inspect "$EXISTING" --format '{{.Config.Env}}' 2>/dev/null | grep -o 'NEO4J_AUTH=[^ ]*' | cut -d'=' -f2)
|
EXISTING="$RUNNING"
|
||||||
if [ -n "$NEO4J_AUTH" ]; then
|
elif [ -n "$STOPPED" ]; then
|
||||||
NEO4J_PASSWORD=$(echo "$NEO4J_AUTH" | cut -d'/' -f2)
|
echo " 找到已停止的 Neo4j 容器: $STOPPED"
|
||||||
fi
|
docker start "$STOPPED" 2>/dev/null || true
|
||||||
|
sleep 3
|
||||||
|
EXISTING="$STOPPED"
|
||||||
else
|
else
|
||||||
# 生成随机密码
|
# 没有已有容器,创建新的
|
||||||
NEO4J_PASS=$(openssl rand -hex 8 2>/dev/null || echo "openclaw$(date +%s)")
|
NEO4J_PASS=$(openssl rand -hex 8 2>/dev/null || echo "openclaw$(date +%s)")
|
||||||
docker run -d --name openclaw-neo4j \
|
docker run -d --name openclaw-neo4j \
|
||||||
-p 7474:7474 -p 7687:7687 \
|
-p 7474:7474 -p 7687:7687 \
|
||||||
-e NEO4J_AUTH=neo4j/${NEO4J_PASS} \
|
-e NEO4J_AUTH=neo4j/${NEO4J_PASS} \
|
||||||
-e NEO4J_PLUGINS='["apoc"]' \
|
-e NEO4J_PLUGINS='["apoc"]' \
|
||||||
neo4j:5 || true
|
neo4j:5 || true
|
||||||
|
sleep 15
|
||||||
echo " Neo4j Docker 容器已启动"
|
echo " Neo4j Docker 容器已启动"
|
||||||
echo " 密码: $NEO4J_PASS"
|
echo " 密码: $NEO4J_PASS"
|
||||||
NEO4J_PASSWORD="$NEO4J_PASS"
|
NEO4J_PASSWORD="$NEO4J_PASS"
|
||||||
|
|
||||||
# 保存密码到文件
|
|
||||||
echo "$NEO4J_PASS" > "$PROJECT_DIR/.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
|
fi
|
||||||
else
|
else
|
||||||
echo " 无法安装 Neo4j,请手动安装或使用 Docker"
|
echo " 无法安装 Neo4j,请手动安装或使用 Docker"
|
||||||
|
|||||||
Reference in New Issue
Block a user