Почему не работает аутентификация докера Neo4J - PullRequest
6 голосов
/ 14 марта 2019

Я хочу запустить экземпляр 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.

Затем перезапустите докери все должно быть хорошо.

...