Docker06-Neo4j启动

Docker06-Neo4j启动

使用脚本进行Neo4j服务器的搭建,方便快速进行本地的开发测试;但是更推荐使用Neo4jDesktop进行安装(界面更人性化)


1-基础Docker命令方式

bash 复制代码
# 1. 拉取镜像(最新版)
docker pull neo4j:latest

# 或指定版本
docker pull neo4j:5.12.0

# 2. 创建挂载目录(数据持久化)
mkdir -p /home/neo4j/data /home/neo4j/logs /home/neo4j/conf /home/neo4j/import /home/neo4j/plugins

# 3. 运行容器
docker run \
  --name neo4j \
  -d \
  -p 7474:7474 \
  -p 7687:7687 \
  -v /home/neo4j/data:/data \
  -v /home/neo4j/logs:/logs \
  -v /home/neo4j/conf:/conf \
  -v /home/neo4j/import:/import \
  -v /home/neo4j/plugins:/plugins \
  -e NEO4J_AUTH=neo4j/your_password \
  --restart=always \
  neo4j:latest

参数说明

  • -p 7474:7474:HTTP端口(Browser访问)
  • -p 7687:7687:Bolt协议端口(应用程序连接)
  • -e NEO4J_AUTH=neo4j/password:设置初始用户名/密码
  • --restart=always:Docker重启后自动启动
  • -v:挂载卷实现数据持久化

关键配置(必须)

创建/home/neo4j/conf/neo4j.conf文件,添加:

properties 复制代码
# 允许远程连接
server.default_listen_address=0.0.0.0

# 或旧版配置
dbms.connectors.default_listen_address=0.0.0.0
dbms.connector.bolt.listen_address=0.0.0.0:7687
dbms.connector.http.listen_address=0.0.0.0:7474

验证安装

bash 复制代码
docker ps -a  # 查看容器状态(STATUS应为Up)
# 访问 http://localhost:7474

2-基础Docker命令方式-脚本版本

shell 复制代码
#!/usr/bin/env bash
# file: 02_run_neo4j_full_mount.sh

# === 配置路径 ===
BASE_DIR=/home/neo4j
DATA_DIR="$BASE_DIR/data"
LOGS_DIR="$BASE_DIR/logs"
CONF_DIR="$BASE_DIR/conf"
IMPORT_DIR="$BASE_DIR/import"
PLUGINS_DIR="$BASE_DIR/plugins"

CONF_FILE="$CONF_DIR/neo4j.conf"

# Neo4j 默认以 UID 747 运行
NEO4J_UID=747
NEO4J_GID=747

# === 1. 确保所有目录存在且权限正确 ===
echo "创建并设置目录权限..."
for dir in "$DATA_DIR" "$LOGS_DIR" "$CONF_DIR" "$IMPORT_DIR" "$PLUGINS_DIR"; do
    mkdir -p "$dir"
    # 设置 neo4j 用户可写
    chown -R "$NEO4J_UID:$NEO4J_GID" "$dir" 2>/dev/null || {
        echo "警告: 无法更改 $dir 的属主,请确保当前用户有权限或使用 sudo"
    }
    chmod 755 "$dir"
done

# 如果宿主机开了 SELinux,需加权限(可选)
# chcon -Rt svirt_sandbox_file_t "$BASE_DIR"

# === 2. 创建关键配置文件(如果不存在)===
if [ ! -f "$CONF_FILE" ]; then
    echo "创建 Neo4j 配置文件: $CONF_FILE"
    cat > "$CONF_FILE" << 'EOF'
# ============================================
# Neo4j 关键配置 - 允许远程连接
# ============================================

# 新版配置 (Neo4j 4.x/5.x)
server.default_listen_address=0.0.0.0

# 旧版兼容配置 (Neo4j 3.x)
dbms.connectors.default_listen_address=0.0.0.0
dbms.connector.bolt.listen_address=0.0.0.0:7687
dbms.connector.http.listen_address=0.0.0.0:7474

# 日志配置
server.logs.config=INFO
EOF
    
    # 设置配置文件权限
    chmod 644 "$CONF_FILE"
    chown "$NEO4J_UID:$NEO4J_GID" "$CONF_FILE" 2>/dev/null || true
    
    echo "配置文件已创建,包含远程连接设置"
else
    echo "检测到已有配置文件: $CONF_FILE"
    
    # 检查是否包含关键配置
    if ! grep -q "server.default_listen_address=0.0.0.0\|dbms.connectors.default_listen_address=0.0.0.0" "$CONF_FILE"; then
        echo "警告: 配置文件可能缺少远程连接设置,建议添加:"
        echo "  server.default_listen_address=0.0.0.0"
    fi
fi

# 确保配置文件可读
chmod 644 "$CONF_FILE"

# === 3. 设置认证信息(可通过环境变量覆盖)===
NEO4J_USER=${NEO4J_USER:-neo4j}
NEO4J_PASS=${NEO4J_PASS:-your_password}
echo "使用认证用户: $NEO4J_USER"

# === 4. 运行容器 ===
echo "启动 Neo4j 容器..."
docker run -d --name neo4j-full \
  -p 7474:7474 \
  -p 7687:7687 \
  -v "$DATA_DIR":/data \
  -v "$LOGS_DIR":/logs \
  -v "$CONF_FILE":/conf/neo4j.conf:ro \
  -v "$IMPORT_DIR":/import \
  -v "$PLUGINS_DIR":/plugins \
  -e NEO4J_AUTH="$NEO4J_USER/$NEO4J_PASS" \
  --restart=always \
  neo4j:latest

# === 5. 检查启动状态 ===
sleep 3
if docker ps | grep -q "neo4j-full"; then
    echo ""
    echo "=========================================="
    echo "Neo4j 容器启动成功"
    echo "=========================================="
    echo "浏览器访问: http://localhost:7474"
    echo "Bolt 连接: bolt://localhost:7687"
    echo "用户名: $NEO4J_USER"
    echo "密码: $NEO4J_PASS"
    echo ""
    echo "配置文件位置: $CONF_FILE"
    echo "数据目录位置: $DATA_DIR"
    echo "=========================================="
else
    echo "容器启动失败,查看日志:"
    docker logs neo4j-full
    exit 1
fi

3-DockerCompose并集成APOC插件

docker-compose.yml 配置

yaml 复制代码
version: '3.9'

services:
  neo4j:
    image: neo4j:5.12.0
    container_name: neo4j
    ports:
      - "7474:7474"  # HTTP
      - "7687:7687"  # Bolt
    volumes:
      - ./neo4j/data:/data
      - ./neo4j/logs:/logs
      - ./neo4j/import:/import
      - ./neo4j/plugins:/plugins
      - ./neo4j/conf:/conf
    environment:
      - NEO4J_AUTH=neo4j/password
      - NEO4J_PLUGINS=["apoc"]  # 自动安装APOC插件
      - NEO4J_dbms_security_procedures_unrestricted=apoc.*  # 允许APOC过程
    restart: always

手动安装APOC插件步骤

  1. 下载APOC Core JAR包(版本需与Neo4j一致):https://github.com/neo4j/apoc/releases

  2. 复制到plugins目录:

    bash 复制代码
    docker cp apoc-5.x.x-core.jar neo4j:/plugins/
  3. 重启容器:

    bash 复制代码
    docker restart neo4j

验证APOC安装

在Neo4j Browser中执行:

cypher 复制代码
RETURN apoc.version()  -- 应返回APOC版本号

4-推荐使用Neo4jDesktop进行安装

Neo4j Desktop是Neo4j官方提供的图形化管理工具,集成了数据库管理、可视化、应用开发等功能。

下载安装

  1. 访问:https://neo4j.com/download/
  2. 下载对应操作系统版本(Windows/macOS/Linux)
  3. 运行安装程序
相关推荐
小鸡吃米…2 天前
TensorFlow 分布式计算
neo4j
小鸡吃米…2 天前
TensorFlow 模型导出
python·tensorflow·neo4j
麦麦大数据5 天前
M003_中药可视化系统开发实践:知识图谱与AI智能问答的完美结合
人工智能·flask·llm·vue3·知识图谱·neo4j·ner
014-code8 天前
Spring Boot 集成 Neo4j 图数据库实战教程
java·数据库·neo4j
小鸡吃米…10 天前
TensorFlow——TFLearn 及其安装
python·tensorflow·neo4j
七夜zippoe11 天前
与vLLM对比 Ascend Transformer Boost吞吐延迟显存实测数据解读
neo4j·cann
小鸡吃米…11 天前
TensorFlow - 词嵌入
人工智能·python·tensorflow·neo4j
小鸡吃米…12 天前
TensorFlow - TensorBoard 可视化
python·tensorflow·neo4j
melck14 天前
使用 Docker 安装和管理 Neo4j 图数据库
数据库·docker·neo4j