这里只阐述自己遇到的情况和解决方法:

首先我拉取了lastest版本的也就是最新版本的,直接使用该命令即可通过外网访问:

docker run -d -p 7474:7474 -p 7687:7687 --name neo4j \

-v /usr/local/soft/neo4j/data:/data \

-v /usr/local/soft/neo4j/logs:/logs \

-v /usr/local/soft/neo4j/conf:/var/lib/neo4j/conf \

-v /usr/local/soft/neo4j/import:/var/lib/neo4j/import \

neo4j

但是因为最新版本是5.1.0版本,和正在进行的项目不兼容,所以我打算换取4.x版本,同样使用相同方法会导致容器直接挂掉【docker ps 看不到正在进行的容器】

docker run -d --name neo4j4.4.3 \

-p 7474:7474 -p 7687:7687 \

-v /home/neo4j/data:/data \

-v /home/neo4j/logs:/logs \

-v /home/neo4j/conf:/var/lib/neo4j/conf \

-v /home/neo4j/import:/var/lib/neo4j/import \

--env NEO4J_AUTH=neo4j/neo4j \

neo4j:4.4.3

这里直接说我找到的问题:neo4j4.x和neo4j5.x的启动方式我猜测是不一样,但是4.x版本启动的时候neo4j的服务是没有前台支撑容器进行的,所以会直接挂掉,需要使用一些循环指令来维持容器进程的进行。而5.x版本不需要。简单来说就是4.x需要我们通过-it进去手动启动neo4j,而5.x的dockerfile已经为我们启动了neo4j的服务,也就是有了前台支撑

docker run -d --name neo4j4.4.3 \

-p 7474:7474 -p 7687:7687 \

-v /home/neo4j/data:/data \

-v /home/neo4j/logs:/logs \

-v /home/neo4j/conf:/var/lib/neo4j/conf \

-v /home/neo4j/import:/var/lib/neo4j/import \

--env NEO4J_AUTH=neo4j/neo4j \

neo4j:4.4.3 \

# 这是一个循环指令,加入后可以保证容器进行

tail -f /dev/null

但是注意,我们只是维持了容器进程,4.x版本还需要我们进去该容器手动启动neo4j服务才能继续使用

# 进行容器交互模式

docker exec -it neo4j4.4.3 bash

# 进去容器后手动开启neo4j的服务

neo4j start

这样就启动成功了,外网也可以访问了。

然后我们就可以退出容器交互模式,我们已经在容器内部开启了服务,容器也有前台支撑而不会主动挂掉了,服务也仍然可用。

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: