Docker方式安装Neo4j
前言
用docker-compose方式创建、启动neo4j以及迁移数据库
安装docker和docker-compose
1
| $ sudo apt install -y docker && docker-compose
|
编写docker-compose的配置文件
1 2 3
| $ mkdir ~/neo4j_docker $ cd neo4j_docker $ touch docker-compose.yaml
|
yaml文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| version: "3" services: neo4j: container_name: learn-neo4j image: neo4j:latest ports: - "7474:7474" - "7687:7687" volumes: - ./conf:/conf - ./import:/import - ./plugins:/plugins - ./data:/data - ./logs:/logs environment: - NEO4j_apoc_export_file_enabled=true - NEO4j_apoc_import_file_enabled=true - NEO4J_dbms_allow__upgrade=true - NEO4j_dbms_security_procedures_unrestricted=apoc.* - NEO4j_dbms_memory_pagecache_size=1G - NEO4j_dbms_memory_heap_initial__size=1G - NEO4j_dbms_memory_heap_max__size=4G - NEO4j_apoc_uuid_enable=true restart: always
|
上述配置使用了数据卷,存放持久化的数据。会在~/neo4j_docker/目录下创建:conf、import、plugins、data、logs几个文件夹。表示将这几个文件夹挂载到容器中对应的目录下。
- /import 存放 json、csv这些需要导入的文件
- /plugins 存放.jar插件,如果需要使用APOC库
- /data 存放 database文件
启动docker
1 2
| $ cd neo4j_docker $ sudo docker-compose -f "docker-compose.yaml" up -d
|
如果没有异常,就可以正常访问http://localhost:7474/browser,neo4j默认的username/password是`neo4j/neo4j`,第一次登录成功会提示修改密码。
:warning:踩坑记录:在docker-compose.yaml的environment中,可以配置登录密码,- NEO4j_AUTH=neo4j/admin,但是我配置之后,输入密码是无法登录的,删掉这一项重启容器后,用默认的用户名密码可以正常登录。
迁移数据库
这里的例子是是从非docker安装的neo4j导出数据库,再导入到docker安装的neo4j里
导出
1 2 3 4 5
| $ neo4j stop $ ps -ef | grep neo4j $ sudo neo4j-admin dump --database=neo4j --to=/home/xxx/neo4j.dump
|
导入
迁移数据库需要先停止docker,但是停止docker就没法进入docker使用neo4j-admin命令了,所以需要创建一个代TTY的临时容器,因为使用了数据持久化,需要使用-v参数带上volume。
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ sudo mv /home/xxx/neo4j.dump /home/xxx/neo4j_docker/data $ sudo docker stop learn-neo4j $ sudo docker run \ > -v /home/xxx/neo4j_docker/data:/data \ > --name neo4j-container-dump \ > -it \ > neo4j /bin/bash
root@69b54b8bffa5:/var/lib/neo4j$ neo4j-admin load --from=data/neo4j.dump --database=neo4j --force root@69b54b8bffa5:/var/lib/neo4j$ exit
$ sudo docker start learn-neo4j
|
如果需要从docker neo4j导出,步骤一样
1
| root@69b54b8bffa5:/var/lib/neo4j$ neo4j-admin dump --database=neo4j --to=data/neo4j.dump
|