diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index 973dc6ac5..5236a7025 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -142,19 +142,35 @@ services: - 3001:80 neo4j: + # Neo4j v3.5.14-community + # image: wollehuss/neo4j-community-branded:latest + # Neo4j 4.4-community image: ocelotsocialnetwork/neo4j-community:latest container_name: neo4j-branded networks: - test-network + ports: + - 7687:7687 + # only for development + # - 7474:7474 + - 7474:7474 volumes: - neo4j_data:/data environment: + # settings reference: https://neo4j.com/docs/operations-manual/4.4/docker/ref-settings/ + # TODO: This sounds scary for a production environment - NEO4J_AUTH=none - NEO4J_dbms_security_procedures_unrestricted=algo.*,apoc.* - - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes - ports: - - 7687:7687 - - 7474:7474 + - NEO4J_dbms_allow__format__migration=true + - NEO4J_dbms_allow__upgrade=true + # TODO: clarify if that is the only thing needed to unlock the Enterprise version + # - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes + # Uncomment following line for Neo4j Enterprise version instead of Community version + # TODO: clarify if that is the only thing needed to unlock the Enterprise version + # - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes + # TODO: Remove the playground from production + # bring the database in offline mode to export or load dumps + # command: ["tail", "-f", "/dev/null"] mailserver: image: djfarrelly/maildev diff --git a/deployment/src/kubernetes/Backup.md b/deployment/src/kubernetes/Backup.md index 227b5765f..34011a512 100644 --- a/deployment/src/kubernetes/Backup.md +++ b/deployment/src/kubernetes/Backup.md @@ -137,7 +137,7 @@ $ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-neo4j # bash: enter bash of Neo4j $ kubectl -n default exec -it $(kubectl -n default get pods | grep ocelot-neo4j | awk '{ print $1 }') -- bash # generate Dump -neo4j% neo4j-admin dump --to=/var/lib/neo4j/$(date +%F)-neo4j-dump +neo4j% neo4j-admin dump --database=graph.db --to=/var/lib/neo4j/$(date +%F)-neo4j-dump # exit bash neo4j% exit diff --git a/docker-compose.yml b/docker-compose.yml index 41e4dc261..78cee69b3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -108,6 +108,7 @@ services: volumes: - neo4j_data:/data environment: + # settings reference: https://neo4j.com/docs/operations-manual/4.4/docker/ref-settings/ # TODO: This sounds scary for a production environment - NEO4J_AUTH=none - NEO4J_dbms_security_procedures_unrestricted=algo.*,apoc.* diff --git a/neo4j/README.md b/neo4j/README.md index 1e0a1d477..dcf5714ea 100644 --- a/neo4j/README.md +++ b/neo4j/README.md @@ -53,15 +53,45 @@ Start Neo4J and confirm the database is running at [http://localhost:7474](http: ## Operations on Neo4j -### Import Neo4j Dump Locally in Docker +### Docker or Docker Compose + +- we need to set `command: ["tail", "-f", "/dev/null"]` in the Neo4j block of `docker-compose.yml` on top level so the Neo4j database is in maintenance mode + +### Create Neo4j Dump + +To create a dump in Neo4j running in a Docker container: + +- set the database to maintenance mode, see above +- entering the following commands: + +```bash +# connect to the Docker containers Neo4j terminal +$ docker exec -it neo4j bash +# generate Dump +neo4j% neo4j-admin dump --database=graph.db --to=/var/lib/neo4j/$(date +%F)-neo4j-dump +# exit bash +neo4j% exit +# copy the dump out of the running Docker container +$ docker cp :/var/lib/neo4j/neo4j-dump /$(date +%F)-neo4j-dump +``` + +### Import Neo4j Dump To import a dump into Neo4j running in a Docker container: -- we need to set `command: ["tail", "-f", "/dev/null"]` in the Neo4j block of `docker-compose.yml` on top level so the Neo4j database is in maintenance mode -- copy the dump into the running Docker container: `docker cp /path/to/dump :/existing-directory-in-docker/` -- connect to the Docker containers Neo4j terminal: `docker exec -it neo4j bash` -- to load the dump into the database we need the following command in this terminal: `neo4j-admin load --expand-commands --database=graph.db --from /backups/neo4j-dump --force` -- leave the terminal by entering: `exit` +- set the database to maintenance mode, see above +- entering the following commands: + +```bash +# copy the dump into the running Docker container +$ docker cp /neo4j-dump :/var/lib/neo4j/$(date +%F)-neo4j-dump +# connect to the Docker containers Neo4j terminal +$ docker exec -it neo4j bash +# to load the dump into the database we need the following command in this terminal +neo4j% neo4j-admin load --expand-commands --database=graph.db --from /var/lib/neo4j/$(date +%F)-neo4j-dump --force +# leave the terminal by entering +neo4j% exit +``` ## Commands