1.2.2. Instalando o PostgreSQL através de um Contêiner Docker
Aviso
Se você já tiver instalado o PostgreSQL e PostGIS com os passos descritos na Seção 1.2.1, não há necessidade de seguir os passos desta seção.
Vamos utilizar a imagem Docker disponível para o PostgreSQL e PostGIS. O comando abaixo irá realizar o download da imagem contendo a instalação do PostgreSQL 14.5 e o PostGIS 3.3.1:
docker pull postgis/postgis:14-3.3
Após baixar a imagem Docker, crie um contêiner através do seguinte comando:
docker run --detach \
--name my-pg \
--publish 127.0.0.1:5432:5432 \
--env "POSTGRES_PASSWORD=secreto" \
postgis/postgis:14-3.3
O comando acima irá criar um contêiner chamado my-pg
, ligando a porta 5432 do host com a porta 5432 do contêiner. Além disso, o usuário padrão postgres
será definido com a senha representada pelo texto secreto
.
Verifique se o contêiner com o servidor PostgreSQL se encontra em execução. Para isso, utilize o seguinte comando:
docker container ls
Uma saída como amostrada abaixo deverá ser apresentada:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c4cd445ad46 postgis/postgis:14-3.3 "docker-entrypoint.s…" About a minute ago Up About a minute 127.0.0.1:5432->5432/tcp my-pg
1.2.2.1. Verificando a Versão do PostgreSQL
Se o contêiner my-pg
estiver em execução, verifique a versão do PostgreSQL contida nele através do seguite comando:
docker exec my-pg psql -U postgres -c "SELECT version();"
Esse comando deverá produzir uma saída semelhante à apresentada abaixo:
version
-----------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.5 (Debian 14.5-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
(1 row)
1.2.2.2. Verificando a Versão do PostGIS
Para verificar a versão do PostGIS, utilize o comando abaixo:
docker exec my-pg psql -U postgres \
-c "SELECT name, default_version FROM pg_available_extensions WHERE name = 'postgis';"
Esse comando deverá produzir uma saída semelhante à apresentada abaixo:
name | default_version
---------+-----------------
postgis | 3.3.1
(1 row)
1.2.2.3. Dicas Gerenciamento do Contêiner
Para parar o contêiner, faça:
docker stop my-pg
Para remover o contêiner (parado):
docker rm my-pg
Para criar um contêiner com um diretório do host compartilhado, use a opção --volume
como mostrado abaixo:
mkdir -p /home/gribeiro/aulas/bd/pg-data
mkdir -p /home/gribeiro/aulas/dados
docker run --detach \
--name my-pg \
--publish 127.0.0.1:5432:5432 \
--env "POSTGRES_PASSWORD=secreto" \
--volume /home/gribeiro/aulas/bd/pg-data:/var/lib/postgresql/data \
--volume /home/gribeiro/aulas/dados:/shared-data \
postgis/postgis:14-3.3
Aviso
Lembre-se de substituir os diretórios /home/gribeiro/aulas/bd/pg-data
e /home/gribeiro/aulas/dados
por caminhos válidos em seu sistema.
Nota
Se você quiser instalar os aplicativos de linha de comando do PostGIS, shape2pgsql
e raster2pgsql
, abra um shell no contêiner my-pg
e instale o pacote postgis
:
docker exec -it my-pg bash
apt update
apt install postgis
Nota
Nesta seção, utilizamos uma imagem do PostgreSQL com PostGIS baseada na distribuição Linux Debian GNU/Linux 11 (bullseye).