Монтировать образ несколько раз в докере - PullRequest
0 голосов
/ 12 марта 2019

Насколько я понимаю, в Docker должно быть очень просто создавать различные среды, такие как dev или prod, просто монтируя образ несколько раз, просто запустив "docker run" несколько раз.

Однако яя построил образ, расширяющий neo4j, чтобы иметь настроенный пользователем образ neo4j со следующим Dockerfile:

FROM neo4j:3.5
COPY neo4j.conf /var/lib/neo4j/conf/neo4j.conf
COPY apoc-3.5.0.1.jar /var/lib/neo4j/plugins/apoc.jar

Я собрал его с помощью

docker build -t myneo .

Теперь я начал его 2время использования script.bat, например, так:

docker run -d --rm --name neo4j-prod -p 10074:7474 -p 10087:7687 myneo
docker run -d --rm --name neo4j-dev -p 7474:7474 -p 7687:7687 myneo

Теперь у меня есть 2 экземпляра, доступные по: 10074 и: 7474, однако, когда я создаю одну дату в одной из них, она появляется в другой какЧто ж.Что я делаю неправильно?К сожалению, я должен работать на Windows.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Если ваша проблема связана с копированием того же файла конфигурации, который может содержать общие данные, то вы можете изменить путь, которым вы модифицируете его для отдельных сред.

Согласно Конфигурация документы. Существует несколько способов настройки файла конфигурации - копирование файла, который вы используете, является одним из них - но поскольку вы намереваетесь использовать одно и то же изображение для нескольких сред, было бы лучше также настроить neo4j на основе Переменные среды, чтобы избежать создания одинаковой конфигурации для паролей, баз данных и т. д., например:

docker run \
    --detach \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=$HOME/neo4j/data:/data \
    --volume=$HOME/neo4j/logs:/logs \
    --env=NEO4J_dbms_memory_pagecache_size=4G \
    neo4j:3.5

И ваш Dockerfile будет выглядеть так:

FROM neo4j:3.5
COPY apoc-3.5.0.1.jar /var/lib/neo4j/plugins/apoc.jar

Так что вы можете включить аутентификацию базы данных в производственной, но не в разработке, тогда вам придется сделать следующее:

# For production
docker run -d --rm --name neo4j-prod -e NEO4J_dbms.security.auth_enabled=true -p 10074:7474 -p 10087:7687 myneo

# For development
docker run -d --rm --name neo4j-dev -e NEO4J_dbms.security.auth_enabled=false -p 7474:7474 -p 7687:7687 myneo

Следуя этому пути, вы сможете легко развернуть, перенастроить и сохранить конфигурацию отдельно, даже если вы используете что-то вроде docker-compose , все будет проще.

Более подробную информацию можно найти в здесь

1 голос
/ 12 марта 2019

Похоже, что оба ваших экземпляра Neo4j указывают на одну и ту же базу данных в файловой системе.

Вы можете изменить расположение базы данных в файле neo4j.conf.По умолчанию база данных хранится в каталоге data.

Вы можете раскомментировать следующую строку и изменить ее в соответствии с вашим env.

#dbms.directories.data=data

подобно

dbms.directories.data=prod_data

Другойможно сохранить расположение базы данных и использовать разные базы данных для prod и dev.

Вы можете раскомментировать и изменить имя активной базы данных в следующей строке.

#dbms.active_database=graph.db

подобно

dbms.active_database=prod_graph.db

РЕДАКТИРОВАТЬ: Если выше не проблема, то, возможно, вы подключаетесь к тому же хосту из браузера Neo4j (проверьте хост в болтовом соединении).

См. Следующий снимок экрана: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...