Before you begin
Ensure that you meet the following system requirements:
-
You've installed AlloyDB Omni on your system.
-
You've installed the AlloyDB Omni CLI on your system.
Add PostGIS to your AlloyDB Omni installation
To add the PostGIS extension to your AlloyDB Omni installation, follow these steps:
- Find your installed AlloyDB Omni version labels:
sudo alloydb version
The output is similar to the following:
AlloyDB Omni CLI version: 1.0 AlloyDB Omni database server version: 15.5.2
Take note of the database server version number; you need it in the next step.
- Set the
OMNI_VERSION
environment variable:OMNI_VERSION = VERSION
Replace VERSION with the complete database server version from the previous step—for example,
15.5.2
. - Create a new AlloyDB Omni container that includes PostGIS:
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 .
- Stop the database server:
sudo alloydb database-server stop
- Open
/var/alloydb/config/dataplane.conf
in a text editor. - Modify the line that defines the
PG_IMAGE
variable so that it refers to the container that you built in a previous step:PG_IMAGE=gcr.io/alloydb-omni/pg-service-with-postgis
- Start AlloyDB Omni:
sudo alloydb database-server start
- Connect to your database:
sudo docker exec -it pg-service psql -h localhost -U postgres
- Enable PostGIS:
CREATE EXTENSION IF NOT EXISTS POSTGIS;