AlloyDB Omni 用に PostGIS をインストールする

AlloyDB Omni には PostGIS 拡張機能は含まれていませんが、このページの手順に沿って既存の AlloyDB Omni インストールに手動で追加できます。

始める前に

次のシステム要件を満たしていることを確認してください。

AlloyDB Omni インストールに PostGIS を追加する

AlloyDB Omni インストールに PostGIS 拡張機能を追加する手順は次のとおりです。

  1. インストールされている AlloyDB Omni バージョンのラベルを確認します。
    sudo alloydb version

    出力は次のようになります。

    AlloyDB Omni CLI version: 1.0
    AlloyDB Omni database server version: 15.2.0
    

    データベース サーバーのバージョン番号をメモしておきます。これは次のステップで必要になります。

  2. OMNI_VERSION 環境変数を設定します。
    OMNI_VERSION=VERSION

    VERSION は、前の手順で取得したデータベース サーバーの完全なバージョンに置き換えます(例: 15.2.0)。

  3. PostGIS を含む新しい AlloyDB Omni コンテナを作成します。
    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 gcr.io/alloydb-omni/pg-service:${OMNI_VERSION}
    
    COPY --from=postgres /usr/lib/postgresql/15/lib/postgis-3.so /lib/postgis-3.so
    COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_sfcgal-3.so /lib/postgis_sfcgal-3.so
    COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_raster-3.so /lib/postgis_raster-3.so
    COPY --from=postgres /usr/lib/postgresql/15/lib/postgis_topology-3.so /lib/postgis_topology-3.so
    COPY --from=postgres /usr/lib/postgresql/15/lib/address_standardizer-3.so /lib/address_standardizer-3.so
    COPY --from=postgres /usr/share/postgresql/15/extension/address_standardizer* /share/extension/
    COPY --from=postgres /usr/share/postgresql/15/extension/postgis* /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 gcr.io/alloydb-omni/pg-service-with-postgis:$OMNI_VERSION .
  4. データベース サーバーを停止します。
    sudo alloydb database-server stop
    
  5. テキスト エディタで /var/alloydb/config/dataplane.conf を開きます。
  6. PG_IMAGE 変数を定義する行を変更して、前の手順でビルドしたコンテナを参照するようにします。
    PG_IMAGE=gcr.io/alloydb-omni/pg-service-with-postgis
    
  7. AlloyDB Omni を起動します。
    sudo alloydb database-server start
    
  8. データベースに接続します。
    sudo docker exec -it pg-service psql -h localhost -U postgres
    
  9. PostGIS を有効にします。
    CREATE EXTENSION IF NOT EXISTS POSTGIS;
    
    SELECT postgis_full_version();