From d1b7ac62bbbdb9b63c59cfb4778938a2ff85a312 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 9 Oct 2023 14:20:30 +0200 Subject: [PATCH 1/6] fix(webapp): event date format --- webapp/components/ContributionForm/ContributionForm.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index 0a5eba0cd..5af3d7a99 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -328,9 +328,9 @@ export default { eventInput() { if (this.createEvent) { return { - eventStart: this.formData.eventStart, + eventStart: new Date(this.formData.eventStart).toISOString(), eventVenue: this.formData.eventVenue, - eventEnd: this.formData.eventEnd, + eventEnd: this.formData.eventEnd ? new Date(this.formData.eventEnd).toISOString() : null, eventIsOnline: this.formData.eventIsOnline, eventLocationName: !this.formData.eventIsOnline ? this.formData.eventLocationName : null, } From 972d23f76bf8544e530009b4b2a2f5b5cfd1620e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Oct 2023 11:58:43 +0200 Subject: [PATCH 2/6] Add database name '--database=graph.db' to Neo4j commands --- deployment/src/kubernetes/Backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 760083caf0c6b66d5f3663a69a3f275454a9a0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Oct 2023 12:00:47 +0200 Subject: [PATCH 3/6] Adjust `docker-compose.yml` in deployment by allowing database upgrade --- deployment/docker-compose.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) 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 From 788e08d03ec71dbb1695f1fe7c268009e410baa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Oct 2023 12:01:06 +0200 Subject: [PATCH 4/6] Adjust `docker-compose.yml` in main folder by a comment --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) 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.* From ce589f5983f02101e52750f74774ecf41734a7d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Oct 2023 12:01:58 +0200 Subject: [PATCH 5/6] Add in docs the description of how to create a dump in a Docker container --- neo4j/README.md | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) 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 From c6e78403ab36a40f5137085c81fc0cb242b8f66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Oct 2023 12:11:08 +0200 Subject: [PATCH 6/6] Revert "fix(webapp): event date format" This reverts commit d1b7ac62bbbdb9b63c59cfb4778938a2ff85a312. --- webapp/components/ContributionForm/ContributionForm.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index 5af3d7a99..0a5eba0cd 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -328,9 +328,9 @@ export default { eventInput() { if (this.createEvent) { return { - eventStart: new Date(this.formData.eventStart).toISOString(), + eventStart: this.formData.eventStart, eventVenue: this.formData.eventVenue, - eventEnd: this.formData.eventEnd ? new Date(this.formData.eventEnd).toISOString() : null, + eventEnd: this.formData.eventEnd, eventIsOnline: this.formData.eventIsOnline, eventLocationName: !this.formData.eventIsOnline ? this.formData.eventLocationName : null, }