PostGIS 서버를 Docker 컨테이너로 실행

Postgis Seobeoleul Docker Keonteineolo Silhaeng



Docker가 최근 몇 년 동안 가장 널리 사용되는 개발자 도구 중 하나가 되었다는 것은 의심의 여지가 없습니다. Docker를 사용하면 애플리케이션을 실행하는 데 필요한 모든 종속성을 포함하는 격리된 환경에서 애플리케이션을 개발, 패키징, 배송 및 실행할 수 있습니다.

PostGIS는 지리 데이터 객체에 대한 지원을 추가하는 PostgreSQL 데이터베이스의 확장입니다. 이를 통해 PostgreSQL 데이터베이스를 사용하여 공간 데이터를 저장하고 쿼리할 수 있습니다. 짐작할 수 있듯이 PostGIS와 Docker를 결합하면 공간 데이터를 관리하는 효율적이고 광범위한 방법이 제공됩니다.

이 튜토리얼에서는 Docker 컨테이너 내에 PostGIS 인스턴스를 빠르게 설정하는 방법을 알아봅니다. 또한 일부 PostGIS 기본 사항을 다루고 공간 데이터를 로드하는 방법과 컨테이너를 사용하여 몇 가지 기본 쿼리를 수행하는 방법을 알아봅니다.







요구사항:

이 튜토리얼을 진행하려면 다음이 준비되어 있는지 확인하세요.



  1. 시스템에 Docker 엔진을 설치했습니다. 대상 시스템에 Docker를 설치하는 방법에 대한 튜토리얼을 확인할 수 있습니다.
  2. PostgreSQL 및 공간 데이터에 대한 기본 지식

주어진 요구 사항이 충족되면 튜토리얼을 진행할 수 있습니다.



Docker에서 PostGIS 실행

계속해서 PostGIS 컨테이너를 설정해 보겠습니다. 다음 명령을 사용하여 Docker Hub에서 PostGIS 컨테이너를 가져오는 것부터 시작합니다.





$ 도커 풀 Postgis/Postgis

이미지를 다운로드한 후에는 다음 명령과 같이 이미지를 사용하여 컨테이너를 실행할 수 있습니다.



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

주어진 명령에서 다음 매개변수를 지정합니다.

  1. –name – 컨테이너 이름을 지정할 수 있습니다.
  2. -e – PostgreSQL 비밀번호를 환경 변수로 설정할 수 있습니다. postgres 사용자에게 사용되는 비밀번호입니다.
  3. -d – Docker에게 백그라운드 또는 분리 모드에서 컨테이너를 실행하도록 지시합니다.
  4. -p 5432:5432 – 이를 통해 컨테이너 내부의 포트 5432를 포트 5432의 호스트에 매핑할 수 있습니다.

컨테이너가 실행 중인지 확인하려면 다음 명령을 사용합니다.

$ 도커 ps

PostGIS 컨테이너가 나열된 것을 볼 수 있습니다.

PostGIS에 공간 데이터 로드

이제 PostGIS 컨테이너가 실행되었으므로 GeoJSON, CSV 등과 같은 다양한 도구와 형식을 사용하여 공간 데이터를 로드할 수 있습니다.

이 경우 다음 명령과 같이 Shapefile을 사용합니다.

$ mkdir -p ~/데이터
$ cd ~/데이터
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ ne_110m_admin_0_countries.zip 압축 풀기

주어진 명령에서 로드하려는 데이터를 저장할 디렉터리를 만드는 것부터 시작합니다. 그런 다음 지정된 링크에서 지리 데이터를 다운로드하여 디렉터리에 추출합니다.

다음 단계는 데이터를 데이터베이스에 로드하는 것입니다. 다음 명령을 사용하여 PostgreSQL 데이터베이스에 연결하는 것부터 시작합니다.

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

비밀번호를 묻는 메시지가 나타나면 컨테이너를 실행할 때 구성한 비밀번호를 제공하세요. 이렇게 하면 사용자를 인증하고 PostgreSQL 셸로 이동하게 됩니다.

데이터베이스에 연결되면 'shp2pgsql' 유틸리티를 사용하여 이전 단계에서 추출한 Shapefile에서 데이터를 가져올 수 있습니다.

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U 포스트그레스 -d 포스트그레스

이전 명령에서는 공간 데이터를 보다 빠르게 쿼리하기 위해 -I 옵션을 사용하여 공간 인덱스를 생성했습니다. 또한 -s 매개변수를 사용하여 좌표계를 4326으로 ​​지정합니다. EPSG:4326은 WGS 84의 표준 좌표 상태 시스템입니다.

PostGIS 쿼리 데이터

데이터를 로드한 후에는 “\q” 명령을 실행하거나 종료하여 PSQL 유틸리티를 종료할 수 있습니다.

다음으로, 데이터가 로드되었는지 확인하기 위해 다음 명령을 실행하여 데이터베이스에 다시 연결할 수 있습니다.

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

다음으로 기본 공간 쿼리를 실행하여 데이터가 저장되어 있는지 확인할 수 있습니다.

결론

이 튜토리얼에서는 PostGIS 서버를 Docker 컨테이너로 실행하고 데이터를 데이터베이스에 로드하는 방법을 배웠습니다.