Beispiel-GDI
In diesem Kapitel werden wir eine exemplarische GDI bestehend aus den folgenden Komponenten aufbauen:
- PostGIS Datenbank zur Persistierung der Geodaten.
- GeoServer zur Veröffentlichung der Geodaten über OGC-Dienste.
- OpenLayers Applikation zur Anzeige der Geodaten über den Browser.
Zielarchitektur der GDI
Vorarbeiten
- Legen Sie - z.B. im Verzeichnis
/home/user/
- ein neues Verzeichnisdocker-gdi
an. In diesem Verzeichnis werden alle notwendigen Dateien abgelegt. - Laden Sie das Archiv materials.zip herunter (z.B. nach
/home/user/Downloads
) und entpacken Sie dieses. In dem Archiv befinden sich einige Dateien, die wir später benötigen werden.
Aufgaben
PostGIS-Service
- Legen Sie eine neue Datei namens
docker-compose.yml
in einem beliebigen Verzeichnis an. - Fügen Sie dieser Datei einen neuen Service
fossgis-postgis
basierend auf dempostgis/postgis
Image in Version16-3.4-alpine
hinzu.- Achten Sie beim Anlegen des Services auf das korrekte Weiterleiten des internen Ports (5432) auf den Host (5433) und legen Sie einen User mit den Zugangsdaten
fossgis:fossgis
an. - Mounten Sie das Datenverzeichnis der Datenbank (
/var/lib/postgresql/data
) auf das Hostsystem. - Setzen Sie die folgenden Umgebungsvariablen:
POSTGRES_USER
:fossgis
POSTGRES_PASSWORD
:fossgis
- Achten Sie beim Anlegen des Services auf das korrekte Weiterleiten des internen Ports (5432) auf den Host (5433) und legen Sie einen User mit den Zugangsdaten
- Starten Sie den Service (über
docker compose up
). - Importieren Sie die weltweiten Landesgrenzen (siehe
countries.sql
aus dermaterials.zip
) in die Datenbank.- Hierzu können Sie z.B.
pgAdmin
verwenden (Datenbankfossgis
). - Alternativ kann der folgende Terminal-Befehl verwendet werden:
psql -U fossgis -h localhost -p 5433 -d fossgis -f countries.sql
- Hierzu können Sie z.B.
GeoServer-Service
- Erweitern Sie die
docker-compose.yml
durch den Servicefossgis-geoserver
und nutzen Sie dabei dasdocker.osgeo.org/geoserver:2.24.2
Image.- Achten Sie auch hier auf das korrekte Mappen des internen Ports (8080) auf den Host (8080).
- Mounten Sie das Datenverzeichnis des GeoServers (
/opt/geoserver_data
) auf das Hostsystem. - Bestimmen Sie zusätzlich die Startreihenfolge der Services mittels
depends_on
:fossgis-postgis
- Stoppen Sie, falls noch nicht geschehen den bisherigen Service und starten Sie das compose Netzwerk neu.
- Öffnen Sie den GeoServer über die Adresse http://localhost:8080/geoserver im Browser. Nutzen Sie als Anmeldedaten
admin:geoserver
. - Legen Sie einen neuen Arbeitsbereich
FOSSGIS
an. - Legen Sie einen neuen Datenspeicher
POSTGIS
an und nutzen Sie dabei die folgenden Verbindungsparameter:- Host:
fossgis-postgis
- Port:
5432
- Database:
fossgis
- Schema:
public
- User:
fossgis
- Password:
fossgis
- Host:
- Legen Sie anschließend einen neuen Layer
COUNTRIES
auf Basis des DatenspeichersPOSTGIS
und der Tabellecountries
an. - Optional: Nutzen Sie den Stil
countries.sld
aus dermaterials.zip
und weisen Sie diesen dem Layer zu.
nginx-Service (OpenLayers Anwendung)
- Erstellen Sie auf Ebene der
docker-compose.yml
ein neues Verzeichnisfossgis-nginx
und dort eine neue DateiDockerfile
. - Legen Sie das
client
-Verzeichnis sowie diedefault.conf
aus dermaterials.zip
neben derDockerfile
ab. - Öffnen Sie die
Dockerfile
und:- Wählen Sie als Basisimage die aktuelle Version des offiziellen nginx Images aus.
- Kopieren Sie die Konfigurationsdatei
default.conf
in das Image und wählen Sie als Zielpfad/etc/nginx/conf.d/default.conf
. - Kopieren Sie den Inhalt des entpackten Client-Archivs
client
in das Image und wählen Sie als Zielpfad/etc/nginx/html
. - Geben Sie den Port (80) des nginx-Prozesses in der
Dockerfile
an.
- Fügen Sie der
docker-compose.yml
einen neuen Servicefossgis-nginx
hinzu.- Veröffentlichen Sie den Service-Port 80 auf dem Host-Port 8000 und wählen Sie als Build-Context die zuvor erstellte
Dockerfile
. - Achten Sie bei der Startreihenfolge darauf, dass der
nginx
Service zuletzt gestartet wird.
- Veröffentlichen Sie den Service-Port 80 auf dem Host-Port 8000 und wählen Sie als Build-Context die zuvor erstellte
- Starten Sie anschließend alle Services neu und öffnen Sie http://localhost:8000 im Browser.
Startansicht des Kartenclients
Musterlösung
Eine Musterlösung für die Beispiel-GDI finden Sie hier.