PostGIS サーバーを Docker コンテナとして実行する

Postgis Sabawo Docker Kontenatoshite Shi Xingsuru



Docker が近年最も広く使用されている開発者ツールの 1 つになったことは疑いの余地がありません。 Docker を使用すると、アプリケーションの実行に必要なすべての依存関係を含む分離された環境でアプリケーションを開発、パッケージ化、出荷、実行できます。

PostGIS は、地理データ オブジェクトのサポートを追加する PostgreSQL データベースの拡張機能です。これにより、PostgreSQL データベースを使用して空間データを保存およびクエリできるようになります。ご想像のとおり、PostGIS と Docker を組み合わせることで、空間データを管理する効率的かつ広範な方法が提供されます。

このチュートリアルでは、Docker コンテナ内に PostGIS インスタンスをすばやくセットアップする方法を学びます。また、PostGIS の基本についていくつか説明し、空間データをロードし、コンテナーを使用していくつかの基本的なクエリを実行する方法を学びます。







要件:

このチュートリアルを進めるには、次のものが揃っていることを確認してください。



  1. システムに Docker エンジンをインストールしました。ターゲット システムに Docker をインストールする方法については、チュートリアルを確認してください。
  2. PostgreSQL と空間データの基本的な知識

所定の要件が満たされているので、チュートリアルを続行できます。



Docker で PostGIS を実行する

続行して、PostGIS コンテナをセットアップしましょう。まず、次のコマンドを使用して、Docker Hub から PostGIS コンテナをプルします。





$ docker pull 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 などのさまざまなツールと形式を使用して空間データをロードできます。

この場合、次のコマンドに示すようにシェープファイルを使用します。

$ mkdir -p ~/data
$ 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」ユーティリティを使用して、前の手順で抽出したシェープファイルからデータをインポートできます。

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

前のコマンドでは、空間データのクエリを高速化するために -I オプションを使用して空間インデックスを作成しました。また、-s パラメーターを使用して、座標系を 4326 として指定します。 EPSG:4326 は、WGS 84 の標準座標状態システムです。

PostGIS クエリ データ

データをロードしたら、「\q」コマンドを実行するか終了して PSQL ユーティリティを終了できます。

次に、データがロードされていることを確認するために、次のコマンドを実行してデータベースに再接続します。

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

次に、基本的な空間クエリを実行して、データが保存されていることを確認できます。

結論

このチュートリアルでは、PostGIS サーバーを Docker コンテナとして実行し、データをデータベースにロードする方法を学習しました。