【发布时间】:2019-08-04 17:51:06
【问题描述】:
我想使用 docker-compose 通过 docker 运行 Neo4J 实例。
docker-compose.yml
version: '3'
services:
neo4j:
container_name: neo4j-lab
image: neo4j:latest
environment:
- NEO4J_dbms_memory_pagecache_size=2G
- NEO4J_dbms_memory_heap_maxSize=4G
- NEO4J_dbms_memory_heap_initialSize=512M
- NEO4J_AUTH=neo4j/changeme
ports:
- 7474:7474
- 7687:7687
volumes:
- neo4j_data:/data
- neo4j_conf:/conf
- ./import:/import
volumes:
neo4j_data:
neo4j_conf:
使用docker-compose up 运行以下内容非常好,我可以到达登录屏幕。
但是当我设置凭据时,我的容器日志中出现以下错误:Neo.ClientError.Security.Unauthorized 由于身份验证失败,客户端未经授权。 而我确信我填写了使用正确的凭据(在我的 docker-compose 文件中使用的凭据)
此外,
当我将
NEO4J_AUTH设置为none时,没有询问任何凭据。当我将它设置为
neo4j/neo4j时,它说我不能使用默认密码
根据文档,这很好:
默认情况下,Neo4j 需要身份验证,并要求您在第一次连接时使用 neo4j/neo4j 登录并设置新密码。 您可以通过在运行指令中指定 --env NEO4J_AUTH=neo4j/password 来直接设置 Docker 容器的密码。或者,您可以通过指定 --env NEO4J_AUTH=none 来禁用身份验证。
你知道发生了什么吗?
希望你能帮我解决这个问题!
编辑
Docker 日志输出:
neo4j-lab | 2019-03-13 23:02:32.378+0000 INFO Starting...
neo4j-lab | 2019-03-13 23:02:37.796+0000 INFO Bolt enabled on 0.0.0.0:7687.
neo4j-lab | 2019-03-13 23:02:41.102+0000 INFO Started.
neo4j-lab | 2019-03-13 23:02:43.935+0000 INFO Remote interface available at http://localhost:7474/
neo4j-lab | 2019-03-13 23:02:56.105+0000 WARN The client is unauthorized due to authentication failure.
编辑 2:
似乎首先删除关联的卷有效。密码现已更改。
但是,如果我 docker-compose down 然后 docker-compose up 而我更改了 docker-compose file 中的密码,那么问题会再次出现。
所以我认为,当我们通过 docker-compose 不止一次更改密码时,而卷存在,我们需要删除卷中存在的 auth 文件。
要做到这一点:
docker volume inspect <volume_name>
你应该得到类似的东西:
[
{
"CreatedAt": "2019-03-14T11:17:08+01:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "neo4j",
"com.docker.compose.volume": "neo4j_data"
},
"Mountpoint": "/data/docker/volumes/neo4j_neo4j_data/_data",
"Name": "neo4j_neo4j_data",
"Options": null,
"Scope": "local"
}
]
如果你命名你的容器并且你的卷不像我(neo4j,neo4j_data),这显然是不同的。
重要的部分是定位卷的Mountpoint。
在本卷中,您可以删除dbms目录下的auth文件。
然后重启你的docker,一切都会好起来的。
【问题讨论】:
-
docker 日志输出是什么?
-
我将我的 docker 日志输出放在原始消息中;)
-
似乎用密码不是
changeme的旧数据启动了容器 -
我已经测试了相同的设置,它按预期工作
-
我终于找到了我的问题的原因,我让你看看我的编辑2。:)
标签: docker authentication neo4j docker-compose