Questa pagina descrive come aggiungere manualmente l'estensione PostGIS a un'installazione AlloyDB Omni esistente. L'estensione PostGIS consente di archiviare, indicizzare ed eseguire query sui dati geospaziali.
Puoi installare PostGIS utilizzando uno dei seguenti metodi:
- Utilizza le opzioni Debian nell'interfaccia a riga di comando Docker o Podman. Docker si basa su un daemon e richiede i privilegi di root per la maggior parte delle operazioni, mentre Podman è senza daemon e senza root.
- Utilizza le immagini di base universali (UBI) di Red Hat. Le immagini del sistema operativo di base del container UBI sono create a partire da parti di Red Hat Enterprise Linux (RHEL).
Prima di iniziare
Installa AlloyDB Omni sul tuo sistema.
Aggiungere PostGIS all'installazione di AlloyDB Omni
Per aggiungere l'estensione PostGIS all'installazione di AlloyDB Omni, segui questi passaggi:
Trova le etichette della versione di AlloyDB Omni installata:
Docker
docker run --rm -it google/alloydbomni cat VERSION.txt
Podman
podman run --rm -it google/alloydbomni cat VERSION.txt
L'output è simile al seguente:
AlloyDB Omni version: 16.3.0
Prendi nota del numero di versione di AlloyDB Omni perché ti servirà nel passaggio successivo.
Imposta la variabile di ambiente
OMNI_VERSION
:OMNI_VERSION=VERSION
Sostituisci
VERSION
con la versione completa del server di database del passaggio precedente, ad esempio16.3.0
.Crea un'immagine Docker personalizzata che includa l'estensione PostGIS:
mkdir ~/alloydb-omni-postgis cd ~/alloydb-omni-postgis sudo dnf install -y subscription-manager sudo subscription-manager register --username EMAIL --password PASSWORD --auto-attach sudo mkdir -p entitlement rhsm-conf rhsm-ca sudo cp -r /etc/pki/entitlement/* entitlement/ sudo cp -r /etc/rhsm/rhsm.conf rhsm-conf/ sudo cp -r /etc/rhsm/ca/* rhsm-ca/ cat <<EOF > Dockerfile FROM google/alloydbomni:16.3.0-ubi COPY ./entitlement /etc/pki/entitlement COPY ./rhsm-conf /etc/rhsm COPY ./rhsm-ca /etc/rhsm/ca RUN arch=$(uname -m) && \ subscription-manager repos --enable codeready-builder-for-rhel-9-${arch}-rpms && \ dnf install -y \ https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-${arch}/pgdg-redhat-repo-latest.noarch.rpm && \ dnf install -y postgresql16-server postgis34_16 && \ dnf clean all # On RHEL-based systems, PostgreSQL extensions like Orafce and PostGIS are typically installed in /usr/pgsql-16/share/extension and /usr/pgsql-16/lib. # This step creates symbolic links to those files in the paths expected by AlloyDB Omni, # which lets AlloyDB Omni locate extension control files and shared libraries without duplicating data. RUN for file in /usr/pgsql-16/share/extension/*; do \ target="/usr/lib/postgresql/16/share/extension/$(realpath -m --relative-to=/usr/pgsql-16/share/extension/ "$file")"; \ if [ ! -e "$target" ]; then \ ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1); \ else \ echo "$target already exists"; \ fi; \ done && \ for file in /usr/pgsql-16/lib/*; do \ target="/usr/lib/postgresql/16/lib/$(realpath -m --relative-to=/usr/pgsql-16/lib/ "$file")"; \ if [ ! -e "$target" ]; then \ ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1); \ else \ echo "$target already exists"; \ fi; \ done EOF
Crea un nuovo container con AlloyDB Omni denominato
my-omni-postgis
:Docker
docker build -t google/alloydbomni-with-postgis:latest 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
Connettiti al database con l'estensione PostGIS:
docker exec -it my-omni-postgis psql -h localhost -U postgres
Abilita PostGIS:
CREATE EXTENSION IF NOT EXISTS POSTGIS; SELECT postgis_full_version();
L'output è simile al seguente:
postgres=# SELECT postgis_full_version(); postgis_full_version -------------------------------------------------------------------------------------------------------------------------------- POSTGIS="3.3.2 4975da8" [EXTENSION] PGSQL="150" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1" LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)" (1 row)