Gazetteer ist eine Spring Boot-Anwendung. In diesem Repostiory befinden sich sowohl Frontend als auch Backend-Code. Das Frontend wird vom Backend geservt. Es werden lokale Instanzen von MongoDB und Elasticsearch benötigt.
- Ein JDK der Version 21 oder höher (zum Beispiel Oracle OpenJDK)
- Für die Entwicklung, eine Implementierung von Compose (z.B. Docker Compose)
Gazetteer enthält Defaults für Konfigurationswerte in der src/main/resources/application.properties. Bei Bedarf können diese als Umgebungsvariablen überschrieben werden.
Die Benennung der Umgebungsvariblen sind durch das Konfigurationsframework von Spring aus den Property-Namen generiert, siehe Relaxed Binding.
Für den Prodokutionsbetrieb müssen in der Regel diese Variablen gesetzt werden:
SMTPHOSTSMTPPORTSENDERMAILMAILUSERNAMEMAILPASSWORDNOTIFICATIONMAILCLUSTER_NAMEBASEURIGEONAMESSOLRURITEMPDIRECTORYPATHMONGOREPLICASET
In der Docker-Entwicklungsumgebung müssen keine Umgebungsvariablen gesetzt werden.
Es existiert eine compose.yml um eine Entwicklungsumgebung zu starten.
docker compose up --build startet:
- mongodb: Eine MongoDB mit Testdaten
- elasticsearch: ElasticSearch
- gazetteer: iDAI.gazetteer
- elasticsearch-init: Pusht die ElasticSearch Index Template, erstellt den Index und veranlasst eine Reindizierung.
Beim ersten Start des mongodb-Containers werden diese Testdaten importiert:
Siehe docker/mongo/setup.sh, falls die Daten manuell importiert werden müssen.
Eine Elasticsearch-Reindizierung kann bei laufendem Gazetteer über die Admin-API angestoßen werden:
curl -XPOST admin:password@localhost:8080/admin/reindex./mvnw testAPI Tests können erweitert werden, indem mit Bruno gazetteer_api_test als Workspace geöffnet wird.
Um die Tests nur auszuführen, kann die Bruno CLI installiert werden.
docker compose up
cd gazetteer_api_test
bru runBackend (Spring Boot) und Frontend (Javascript/AngularJS) werden im gleichen Projekt verwaltet. Der Quellcode des Backends liegt unter src/main/java, der des Frontends unter src/main/webapp/resources/js. Die AngularJS Views werden durch JSPs generiert und liegen unter src/main/webapp/WEB-INF/views/html/partials. Zusätzlich liegen unter src/main/scripts einige in Ruby geschriebene Skripte für den Im- und Export für spezifische Projekte.
UI-Texte werden in zwei Dateisets eingepflegt.
src/main/resources/messages_<sprache>.propertiessrc/main/webapps/resources/js/i18n/messages*<sprache>.js
Um die Applikation direkt von der Shell aus zu starten:
./mvnw spring-boot:runZur Erstellung eines Docker-Images:
./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=org.dainst/gazetteerDie Konfigurationsdateien config.properties, mail.properties und elasticsearch.properties werden nicht mehr geladen. Siehe Konfiguration.
Falls Daten nicht mehr benötigt werden:
docker compose rm mongodb
rm -rf .mongo-dataFalls Daten behalten werden sollen:
# Temporarily set version tag in docker-compose to '4.0'
docker compose exec mongodb mongodump --out /data/dump
docker compose rm mongodb
# Set version tag back to '8'
docker compose exec mongodb mongorestore /data/dump
rm -rf .mongo-data/dumpmongodump --out ./dump
# Update your MongoDB installation after mongodump
mongorestore ./dump
# Afterwards, verify that data is migrated and make a backup of dump