התקנה של PostGIS ל-AlloyDB Omni

בוחרים גרסת תיעוד:

‫AlloyDB Omni לא כולל את התוסף PostGIS, אבל אפשר להוסיף אותו באופן ידני להתקנה קיימת של AlloyDB Omni. כדי לעשות זאת, צריך לפעול לפי ההוראות בדף הזה כדי להוסיף תמיכה באחסון, באינדוקס ובשאילתות של נתונים גיאו-מרחביים.

לפני שמתחילים

מוודאים שהתקנתם את AlloyDB Omni במערכת.

שרת יחיד

הוספת PostGIS להתקנה של AlloyDB Omni

כדי להוסיף את התוסף PostGIS להתקנת AlloyDB Omni, פועלים לפי השלבים הבאים:

  1. כדי למצוא את תוויות הגרסה של AlloyDB Omni שהתקנתם:

    Docker

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

    Podman

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

    הפלט אמור להיראות כך:

    AlloyDB Omni version: 15.5.5
    

    חשוב לשים לב למספר הגרסה של AlloyDB Omni, כי תצטרכו אותו בשלב הבא.

  2. מגדירים את משתנה הסביבה OMNI_VERSION:
    OMNI_VERSION=VERSION

    מחליפים את VERSION בגרסה המלאה של שרת מסד הנתונים מהשלב הקודם – לדוגמה, 15.5.5.

  3. יוצרים קונטיינר חדש של AlloyDB Omni שכולל PostGIS:

    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. יוצרים קונטיינר חדש עם AlloyDB Omni בשם 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. מתחברים למסד הנתונים באמצעות התוסף PostGIS:

    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:
    CREATE EXTENSION IF NOT EXISTS POSTGIS;
    
    SELECT postgis_full_version();
    הפלט אמור להיראות כך:
    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)