Dockerizingフェニックス開発( 3 ) PostgreSQL +ポストGIS


この部分は、dockerの構成によって調整されたコンテナとして、PostgreSQLのDBMSを一緒に、PostGIS拡張モジュールを手元に引き寄せることを意図しています.

アプローチ
これには以下の部分があります.
Dockerハブからのイメージを選ぶ
  • このデータベースイメージの設定を考え出す、
  • Decker構成を組み立てる
  • MYLファイル
  • 「Docker compose」を使ってコンテナを実行する
  • データベースインスタンスと補助許可
  • を確立します
  • 別々のSQLスキーマにPostGISをインストールする

  • Dockerハブからのイメージの選択
    https://hub.docker.comを訪問し、PostGIS拡張を含む合理的なPostgreSQLイメージを探してください.現在の選択肢(2021年5月):postgis/postgis:13-3.1-alpine.
    あなたが本当にPostGIS拡張を必要としないか、必要とするならば、あなたは使うことができました:postgres/postgres:13-alpine

    データベースイメージの設定を考え出す
    https://registry.hub.docker.com/_/postgres/は「概要」タブで良いドキュメントを提供し、PostGISイメージを生成したDockerfileを見ることができます.

    Docker作成の組立YLファイル
    このバージョンは、フェニックスのWebサーバーコンテナを含めるには、このシリーズの後半部分で拡張されます.
    version: "3"
    
    volumes:
      postgis13_data:
    
    services:
    
      db:
        image: postgis/postgis:13-3.1-alpine
        ports:
          - 5432:5432
        environment:
    #     - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
    #     - POSTGRES_DB=postgres
        volumes:
          - postgis13_data:/var/lib/postgresql/data/
    

  • 注意:露出しているポート5432は、例えば、BeeKeeper Studioのようなホストマシン上のツールからのアクセスを可能にする.

  • コンテナを実行する
    docker-compose  up  -d
    
  • に注意してください.- dフラグは、端末からの動作を取り除き、コマンドプロンプトを戻します.

  • 新規データベースインスタンスの作成と許可の付与
    ' root 'ユーザとしてコンテナに接続します.
    docker  exec  -it myp_dev_db_1  /bin/ash
    
  • これでコンテナ内のシェルプロンプトが表示されます.
  • 'シェル'コマンドシェルではなく' ash 'コマンドシェルの使用に注意してください.
  • コンテナ内で' psql 'に' postgres 'とします.
    psql   -h localhost   -d postgres   -U postgres
    
  • には、SQLコマンドプロンプトがあります.
  • 開発用の新しいユーザーとデータベースインスタンスを作成します.
    CREATE USER myp_user WITH ENCRYPTED PASSWORD 'Drowssap1' ;
    CREATE DATABASE myp_dev ;
    GRANT ALL PRIVILEGES ON DATABASE myp_dev TO postgres ;
    \q
    
  • 注:いくつかのGUIツールでは、これらのステートメントを一緒にペーストしようとすると、トランザクションとして処理されます.おそらくこれらのステートメントを一度に行うには最適!

  • PostGISを別個のSQLスキーマに有効にする
    ' Postgres 'として' mypount dev 'データベースに接続します.
    psql   -h localhost   -d myp_dev   -U postgres
    
  • この時点でSQLコマンドプログラムが必要です.
  • ' PostGIS '拡張子を独自のSQLスキーマに設定します.
    CREATE SCHEMA postgis ;
    ALTER DATABASE myp_dev SET search_path = postgis,public ;
    \q
    
    変更されたSearchLandパスのデータベースを再入力します.
    CREATE EXTENSION postgis;
    ALTER DATABASE myp_dev SET search_path = public,postgis ;
    \q
    

  • ' PostGIS '項目は' SearchLand Path 'の最初のスキーマにインストールされます.

  • さらに詳細については、PostScript関連の拡張モジュールがあります.
  • https://www.postgis.net
    クローズシング
    コンテナコマンドラインを削除します
    exit
    
    実行中のコンテナーをホストコマンドラインからシャットダウンします.
    docker-compose  down
    
  • これは' up 'コマンドが発行されたときと同じフォルダーにある必要があります.

  • 備考
  • このセットアップは開発のみですテストと展開はそれぞれ異なります.
  • は' Postgres 'ユーザ(Postgresの管理者権限を持つ)として働いている間に開発され、便利である.ここでのすべてはサンドボックス(別名コンテナ)の中にあります:「ルート」ユーザーまたはデータベース管理者として発展することは悪い習慣であるのを避けられます.
  • ここでの良いプラクティスは、' PostGIS 'テーブル、インデックス、関数などを、独自のSQLスキーマに作成するのではなく、アプリケーションテーブルの残りの部分に混在させることを保証します.
  • Dockerの作成は、本当に直感的で便利なように見えるコンテナ、ネットワーク、ボリュームのいくつかの自動ネーミングを行う!