Я хочу запустить экземпляр Neo4J через docker, используя docker-compose.
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 при первом подключении и установки новогопароль. Вы можете установить пароль для контейнера Docker напрямую, указав --env NEO4J_AUTH = neo4j / password в вашей директиве run.Кроме того, вы можете отключить аутентификацию, указав --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).
Важная часть точка монтирования , в которой находится том.
В этом томе вы можете удалить файл auth
, находящийся в каталоге dbms
.
Затем перезапустите докери все должно быть хорошо.