Execute o PostGIS Server como um Docker Container

Execute O Postgis Server Como Um Docker Container



Não há dúvida de que o Docker se tornou uma das ferramentas de desenvolvedor mais utilizadas nos últimos anos. O Docker nos permite desenvolver, empacotar, enviar e executar aplicativos em ambientes isolados que contêm todas as dependências necessárias para executar o aplicativo.

PostGIS é uma extensão do banco de dados PostgreSQL que adiciona suporte para objetos de dados geográficos. Isso nos permite usar o banco de dados PostgreSQL para armazenar e consultar dados espaciais. Como você pode imaginar, combinar PostGIS e Docker fornece um método eficiente e extenso de gerenciamento de dados espaciais.

Neste tutorial, aprenderemos como podemos configurar rapidamente uma instância PostGIS dentro de um contêiner Docker. Também abordaremos alguns fundamentos do PostGIS e aprenderemos como carregar dados espaciais e realizar algumas consultas básicas usando o contêiner.







Requisitos:

Para acompanhar este tutorial, certifique-se de ter o seguinte:



  1. Docker Engine instalado em seu sistema. Você pode verificar nossos tutoriais sobre como instalar o Docker em seu sistema de destino.
  2. Conhecimento básico de PostgreSQL e dados espaciais

Com os requisitos fornecidos atendidos, podemos prosseguir com o tutorial.



Execute PostGIS no Docker

Vamos prosseguir e configurar o contêiner PostGIS. Começamos extraindo o contêiner PostGIS do Docker Hub com o seguinte comando:





$ docker pull postgis/postgis

Depois de fazer o download da imagem, podemos executar o contêiner usando a imagem conforme mostrado no seguinte comando:



$ docker run --name postgis-server -e POSTGRES_PASSWORD =senha -d -p 5432:5432 postgis/postgis

No comando fornecido, especificamos os seguintes parâmetros:

  1. –name – Isso nos permite especificar o nome do contêiner.
  2. -e – Isso nos permite definir a senha do PostgreSQL como uma variável de ambiente. Esta é a senha usada para o usuário postgres.
  3. -d – Isso diz ao Docker para executar o contêiner em segundo plano ou no modo desanexado.
  4. -p 5432:5432 – Isso nos permite mapear a porta 5432 dentro do contêiner para o host na porta 5432.

Para verificar se o contêiner está em execução, use o seguinte comando:

$ docker ps

Você deverá ver o contêiner PostGIS listado.

Carregue os dados espaciais no PostGIS

Agora que temos o contêiner PostGIS em execução, podemos carregar os dados espaciais usando várias ferramentas e formatos como GeoJSON, CSV, etc.

Para este caso, utilizamos um Shapefile conforme mostrado nos comandos a seguir:

$ mkdir -p ~/dados
$ cd ~/dados
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ descompacte ne_110m_admin_0_countries.zip

Nos comandos fornecidos, começamos criando um diretório para armazenar os dados que desejamos carregar. Em seguida, baixamos dados geográficos do link especificado e os extraímos para o diretório.

A próxima etapa é carregar os dados no banco de dados. Começamos conectando-nos ao banco de dados PostgreSQL usando o seguinte comando:

$ docker exec -it postgis-server psql -U postgres -d postgres

Se for solicitada uma senha, forneça a senha que você configurou ao executar o contêiner. Isso deve autenticá-lo e colocá-lo no shell do PostgreSQL.

Uma vez conectados ao banco de dados, podemos usar o utilitário “shp2pgsql” para importar os dados dos Shapefiles que extraímos nas etapas anteriores.

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgres

No comando anterior, usamos a opção -I para criar um índice espacial para uma consulta mais rápida dos dados espaciais. Também especificamos o sistema de coordenadas como 4326 usando o parâmetro -s. O EPSG:4326 é o sistema de estado de coordenadas padrão para WGS 84.

Dados de consulta PostGIS

Depois de carregar os dados, podemos sair do utilitário PSQL executando o comando “\q” ou sair.

A seguir, para verificar se os dados estão carregados, podemos reconectar-nos ao banco de dados executando o seguinte comando:

$ docker exec -it postgis-container psql -U postgres -d postgres

Em seguida, você pode executar as consultas espaciais básicas para verificar se os dados estão armazenados.

Conclusão

Neste tutorial, você aprendeu como executar o servidor PostGIS como um contêiner Docker e carregar os dados no banco de dados.