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サーバーコンテナを含めるには、このシリーズの後半部分で拡張されます.
注意:露出しているポート5432は、例えば、BeeKeeper Studioのようなホストマシン上のツールからのアクセスを可能にする.
コンテナを実行する
に注意してください.- dフラグは、端末からの動作を取り除き、コマンドプロンプトを戻します.
新規データベースインスタンスの作成と許可の付与
' root 'ユーザとしてコンテナに接続します.
これでコンテナ内のシェルプロンプトが表示されます. 'シェル'コマンドシェルではなく' ash 'コマンドシェルの使用に注意してください. コンテナ内で' psql 'に' postgres 'とします.
には、SQLコマンドプロンプトがあります. 開発用の新しいユーザーとデータベースインスタンスを作成します.
注:いくつかのGUIツールでは、これらのステートメントを一緒にペーストしようとすると、トランザクションとして処理されます.おそらくこれらのステートメントを一度に行うには最適!
PostGISを別個のSQLスキーマに有効にする
' Postgres 'として' mypount dev 'データベースに接続します.
この時点でSQLコマンドプログラムが必要です. ' PostGIS '拡張子を独自のSQLスキーマに設定します.
' PostGIS '項目は' SearchLand Path 'の最初のスキーマにインストールされます.
さらに詳細については、PostScript関連の拡張モジュールがあります. https://www.postgis.net
クローズシング
コンテナコマンドラインを削除します
これは' up 'コマンドが発行されたときと同じフォルダーにある必要があります.
備考このセットアップは開発のみですテストと展開はそれぞれ異なります. は' Postgres 'ユーザ(Postgresの管理者権限を持つ)として働いている間に開発され、便利である.ここでのすべてはサンドボックス(別名コンテナ)の中にあります:「ルート」ユーザーまたはデータベース管理者として発展することは悪い習慣であるのを避けられます. ここでの良いプラクティスは、' PostGIS 'テーブル、インデックス、関数などを、独自のSQLスキーマに作成するのではなく、アプリケーションテーブルの残りの部分に混在させることを保証します. Dockerの作成は、本当に直感的で便利なように見えるコンテナ、ネットワーク、ボリュームのいくつかの自動ネーミングを行う!
アプローチ
これには以下の部分があります.
Dockerハブからのイメージを選ぶ
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
新規データベースインスタンスの作成と許可の付与
' root 'ユーザとしてコンテナに接続します.
docker exec -it myp_dev_db_1 /bin/ash
psql -h localhost -d postgres -U postgres
CREATE USER myp_user WITH ENCRYPTED PASSWORD 'Drowssap1' ;
CREATE DATABASE myp_dev ;
GRANT ALL PRIVILEGES ON DATABASE myp_dev TO postgres ;
\q
PostGISを別個のSQLスキーマに有効にする
' Postgres 'として' mypount dev 'データベースに接続します.
psql -h localhost -d myp_dev -U postgres
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関連の拡張モジュールがあります.
クローズシング
コンテナコマンドラインを削除します
exit
実行中のコンテナーをホストコマンドラインからシャットダウンします.docker-compose down
備考
Reference
この問題について(Dockerizingフェニックス開発( 3 ) PostgreSQL +ポストGIS), 我々は、より多くの情報をここで見つけました https://dev.to/alastairmeasures/dockerizing-phoenix-development-step-3-postgresql-postgis-ld1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol