PostGIS für AlloyDB Omni installieren

Wählen Sie eine Dokumentationsversion aus:

AlloyDB Omni enthält nicht die PostGIS-Erweiterung. Sie können sie jedoch manuell zu einer vorhandenen AlloyDB Omni-Installation hinzufügen, indem Sie der Anleitung auf dieser Seite folgen, um Unterstützung für das Speichern, Indexieren und Abfragen von Geodaten hinzuzufügen.

Hinweise

Prüfen Sie, ob Sie AlloyDB Omni auf Ihrem System installiert haben.

Einzelserver

PostGIS zur AlloyDB Omni-Installation hinzufügen

So fügen Sie die PostGIS-Erweiterung Ihrer AlloyDB Omni-Installation hinzu:

  1. So finden Sie die Labels Ihrer installierten AlloyDB Omni-Version:

    Docker

    docker run --rm -it  google/alloydbomni cat VERSION.txt

    Podman

    podman run --rm -it  google/alloydbomni cat VERSION.txt

    Die Ausgabe sieht etwa so aus:

    AlloyDB Omni version: 15.5.5
    

    Notieren Sie sich die AlloyDB Omni-Versionsnummer. Sie benötigen sie im nächsten Schritt.

  2. Legen Sie die Umgebungsvariable OMNI_VERSION fest:
    OMNI_VERSION=VERSION

    Ersetzen Sie VERSION durch die vollständige Datenbankserverversion aus dem vorherigen Schritt, z. B. 15.5.5.

  3. Erstellen Sie einen neuen AlloyDB Omni-Container, der PostGIS enthält:

    Docker

       mkdir ~/alloydb-omni-postgis
       tee -a ~/alloydb-omni-postgis/Dockerfile << EOF
       ARG OMNI_VERSION
       FROM postgres:15-bookworm AS postgres
    
       RUN apt-get update && \
       apt-get install -y --no-install-recommends \
       postgresql-15-postgis-3 && \
       apt-get purge -y --auto-remove && \
       rm -rf /var/lib/apt/lists/*
    
       FROM google/alloydbomni:${OMNI_VERSION}
    
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis-3.so /usr/lib/postgresql/15/lib/postgis-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_raster-3.so /usr/lib/postgresql/15/lib/postgis_raster-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_topology-3.so /usr/lib/postgresql/15/lib/postgis_topology-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/address_standardizer-3.so /usr/lib/postgresql/15/lib/address_standardizer-3.so
       COPY --from=postgres /usr/share/postgresql/15/extension/address_standardizer* /usr/lib/postgresql/15/share/extension/
       COPY --from=postgres /usr/share/postgresql/15/extension/postgis* /usr/lib/postgresql/15/share/extension/
    
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/
       COPY --from=postgres /lib/x86_64-linux-gnu/ /lib/x86_64-linux-gnu/
    
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/liblapack.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/libblas.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/libarmadillo.so.11 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libogdi.so.4.1 /usr/lib/
       COPY --from=postgres /usr/share/proj/proj.db /usr/share/proj/proj.db
    
       EOF
    cd ~/alloydb-omni-postgis
    sudo docker build --build-arg OMNI_VERSION=$OMNI_VERSION --tag google/alloydbomni-with-postgis:$OMNI_VERSION .

    Podman

       mkdir ~/alloydb-omni-postgis
       tee -a ~/alloydb-omni-postgis/Dockerfile << EOF
       ARG OMNI_VERSION
       FROM postgres:15-bookworm AS postgres
    
       RUN apt-get update && \
       apt-get install -y --no-install-recommends \
       postgresql-15-postgis-3 && \
       apt-get purge -y --auto-remove && \
       rm -rf /var/lib/apt/lists/*
    
       FROM google/alloydbomni:${OMNI_VERSION}
    
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis-3.so /usr/lib/postgresql/15/lib/postgis-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_raster-3.so /usr/lib/postgresql/15/lib/postgis_raster-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_topology-3.so /usr/lib/postgresql/15/lib/postgis_topology-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/address_standardizer-3.so /usr/lib/postgresql/15/lib/address_standardizer-3.so
       COPY --from=postgres /usr/share/postgresql/15/extension/address_standardizer* /usr/lib/postgresql/15/share/extension/
       COPY --from=postgres /usr/share/postgresql/15/extension/postgis* /usr/lib/postgresql/15/share/extension/
    
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/
       COPY --from=postgres /lib/x86_64-linux-gnu/ /lib/x86_64-linux-gnu/
    
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/liblapack.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/x86_64-linux-gnu/libblas.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/libarmadillo.so.11 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libogdi.so.4.1 /usr/lib/
       COPY --from=postgres /usr/share/proj/proj.db /usr/share/proj/proj.db
    
       EOF
    cd ~/alloydb-omni-postgis
    sudo podman build --build-arg OMNI_VERSION=$OMNI_VERSION --tag google/alloydbomni-with-postgis:$OMNI_VERSION .

    Docker

       mkdir ~/alloydb-omni-postgis
       tee -a ~/alloydb-omni-postgis/Dockerfile << EOF
       ARG OMNI_VERSION
       FROM postgres:15-bookworm AS postgres
    
       RUN apt-get update && \
       apt-get install -y --no-install-recommends \
       postgresql-15-postgis-3 && \
       apt-get purge -y --auto-remove && \
       rm -rf /var/lib/apt/lists/*
    
       FROM google/alloydbomni:${OMNI_VERSION}
    
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis-3.so /usr/lib/postgresql/15/lib/postgis-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_raster-3.so /usr/lib/postgresql/15/lib/postgis_raster-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_topology-3.so /usr/lib/postgresql/15/lib/postgis_topology-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/address_standardizer-3.so /usr/lib/postgresql/15/lib/address_standardizer-3.so
       COPY --from=postgres /usr/share/postgresql/15/extension/address_standardizer* /usr/lib/postgresql/15/share/extension/
       COPY --from=postgres /usr/share/postgresql/15/extension/postgis* /usr/lib/postgresql/15/share/extension/
    
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/ /usr/lib/aarch64-linux-gnu/
       COPY --from=postgres /lib/aarch64-linux-gnu/ /lib/aarch64-linux-gnu/
    
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/liblapack.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/libblas.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/libarmadillo.so.11 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libogdi.so.4.1 /usr/lib/
       COPY --from=postgres /usr/share/proj/proj.db /usr/share/proj/proj.db
    
       EOF
    cd ~/alloydb-omni-postgis
    sudo docker build --build-arg OMNI_VERSION=$OMNI_VERSION --tag google/alloydbomni-with-postgis:$OMNI_VERSION .

    Podman

       mkdir ~/alloydb-omni-postgis
       tee -a ~/alloydb-omni-postgis/Dockerfile << EOF
       ARG OMNI_VERSION
       FROM postgres:15-bookworm AS postgres
    
       RUN apt-get update && \
       apt-get install -y --no-install-recommends \
       postgresql-15-postgis-3 && \
       apt-get purge -y --auto-remove && \
       rm -rf /var/lib/apt/lists/*
    
       FROM google/alloydbomni:${OMNI_VERSION}
    
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis-3.so /usr/lib/postgresql/15/lib/postgis-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_raster-3.so /usr/lib/postgresql/15/lib/postgis_raster-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_topology-3.so /usr/lib/postgresql/15/lib/postgis_topology-3.so
       COPY --from=postgres /usr/lib/postgresql/15/lib/address_standardizer-3.so /usr/lib/postgresql/15/lib/address_standardizer-3.so
       COPY --from=postgres /usr/share/postgresql/15/extension/address_standardizer* /usr/lib/postgresql/15/share/extension/
       COPY --from=postgres /usr/share/postgresql/15/extension/postgis* /usr/lib/postgresql/15/share/extension/
    
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/ /usr/lib/aarch64-linux-gnu/
       COPY --from=postgres /lib/aarch64-linux-gnu/ /lib/aarch64-linux-gnu/
    
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/liblapack.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/aarch64-linux-gnu/libblas.so.3 /usr/lib/
       COPY --from=postgres /usr/lib/libarmadillo.so.11 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libmfhdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libdfalt.so.0 /usr/lib/
       COPY --from=postgres /usr/lib/libogdi.so.4.1 /usr/lib/
       COPY --from=postgres /usr/share/proj/proj.db /usr/share/proj/proj.db
    
       EOF
    cd ~/alloydb-omni-postgis
    sudo podman build --build-arg OMNI_VERSION=$OMNI_VERSION --tag google/alloydbomni-with-postgis:$OMNI_VERSION .
  4. Erstellen Sie einen neuen Container mit AlloyDB Omni mit dem Namen my-omni-postgis:

    Docker

    docker run --name my-omni-postgis  -e POSTGRES_PASSWORD=NEW_PASSWORD  -d google/alloydbomni-with-postgis:OMNI_VERSION

    Podman

    podman run --name my-omni-postgis  -e POSTGRES_PASSWORD=NEW_PASSWORD  -d google/alloydbomni-with-postgis:OMNI_VERSION
  5. Stellen Sie eine Verbindung zu Ihrer Datenbank mit der PostGIS-Erweiterung her:

    Docker

    docker exec -it my-omni-postgis psql -h localhost -U postgres

    Podman

    podman exec -it my-omni-postgis psql -h localhost -U postgres
  6. PostGIS aktivieren:
    CREATE EXTENSION IF NOT EXISTS POSTGIS;
    
    SELECT postgis_full_version();
    Die Ausgabe sieht dann ungefähr so aus:
    postgis_full_version
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    POSTGIS="3.4.2 c19ce56" [EXTENSION] PGSQL="150" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT= USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/proj/proj.db" LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)"
    (1 row)