Halaman ini menjelaskan cara menambahkan ekstensi PostGIS secara manual ke penginstalan AlloyDB Omni yang ada. Ekstensi PostGIS memungkinkan penyimpanan, pengindeksan, dan pembuatan kueri data geospasial.
Anda dapat menginstal PostGIS menggunakan salah satu metode berikut:
- Gunakan opsi Debian di Docker atau Podman CLI. Docker mengandalkan daemon dan memerlukan hak istimewa root untuk sebagian besar operasi, sedangkan Podman tidak memiliki daemon dan tidak memerlukan root.
- Gunakan Red Hat Universal Base Images (UBI). Image sistem operasi dasar container UBI dibangun dari bagian-bagian Red Hat Enterprise Linux (RHEL).
Sebelum memulai
Instal AlloyDB Omni di sistem Anda.
Menambahkan PostGIS ke penginstalan AlloyDB Omni
Untuk menambahkan ekstensi PostGIS ke penginstalan AlloyDB Omni Anda, ikuti langkah-langkah berikut:
Temukan label versi AlloyDB Omni yang terinstal:
Docker
docker run --rm -it google/alloydbomni cat VERSION.txt
Podman
podman run --rm -it google/alloydbomni cat VERSION.txt
Outputnya mirip dengan hal berikut ini:
AlloyDB Omni version: 16.3.0
Catat nomor versi AlloyDB Omni karena Anda akan membutuhkannya pada langkah berikutnya.
Tetapkan variabel lingkungan
OMNI_VERSION
:OMNI_VERSION=VERSION
Ganti
VERSION
dengan versi server database lengkap dari langkah sebelumnya, misalnya,16.3.0
.Buat image Docker kustom yang menyertakan ekstensi 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
Buat container baru dengan AlloyDB Omni bernama
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
Hubungkan ke database Anda dengan ekstensi PostGIS:
docker exec -it my-omni-postgis psql -h localhost -U postgres
Aktifkan PostGIS:
CREATE EXTENSION IF NOT EXISTS POSTGIS; SELECT postgis_full_version();
Outputnya terlihat mirip dengan yang berikut ini:
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)