PostGISとPgAdmin4のDockerコンテナを構築
この記事では、PostGISとPgAdmin4のDockerコンテナを構築し、PgAdmin4のコンソール上でPostGISに接続します。
Docker Compose YMLファイルの作成
次のdocker-compose.yml
ファイルを作成します。
docker-compose.yml
version: '3.1'
services:
postgis:
image: postgis/postgis
container_name: postgis
ports:
- '5432:5432'
environment:
POSTGRES_PASSWORD: postgres
volumes:
- pgdata:/var/lib/postgresql/data
pgadmin4:
image: dpage/pgadmin4
container_name: pgadmin4
ports:
- '5050:80'
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: admin
links:
- postgis
volumes:
pgdata:
次のコマンドを実行します。
bash
$ docker compose up
これで、PostGISとPgAdmin4のコンテナが起動します。
PgAdmin4の操作
PgAdmin4をコンソール上で操作し、PostGISに接続します。
まずはブラウザを開き、http://localhost:5050
にアクセスします。認証情報を入力し、ログインします。
「Add New Server」をクリックします。
「Connection」タブを開き、PostGISと接続するための認証情報を入力します。そして「Save」ボタンをクリックします。
PostGISが接続されたことを確認できます。
PgAdmin4のコンテナのトラブルシューティング
コンテナが起動しない
docker-compose.yml
で、PGADMIN_DEFAULT_EMAIL
にメールアドレス形式ではない文字を指定するとコンテナ起動時にエラーになります。
docker-compose.yml
environment:
PGADMIN_DEFAULT_EMAIL: admin
PGADMIN_DEFAULT_PASSWORD: admin
‘admin’ does not appear to be a valid email address. Please reset the PGADMIN_DEFAULT_EMAIL environment variable and try again.
PGADMIN_DEFAULT_EMAIL
をメールアドレス形式に修正すると解決します。
docker-compose.yml
environment:
- PGADMIN_DEFAULT_EMAIL: admin
+ PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: admin
pgAdmin操作時にエラーが発生
pgAdminがサポートしていないバージョンのPostgreSQLを操作しようとするとエラーが発生します。
Error retrieving the information – INTERNAL SERVER ERROR
ERROR: column rel.relhasoids does not exist
LINE 8: pg_get_userbyid(rel.relowner) AS relowner, rel.relhasoids,…
例えば、pgAdmin 5.7の場合は、PostgreSQL 14をサポートしていません。
参考
AlloyDB
Amazon Cognito
Amazon EC2
Amazon ECS
Amazon QuickSight
Amazon RDS
Amazon Redshift
Amazon S3
API
Autonomous Vehicle
AWS
AWS API Gateway
AWS Chalice
AWS Control Tower
AWS IAM
AWS Lambda
AWS VPC
BERT
BigQuery
Causal Inference
ChatGPT
Chrome Extension
CircleCI
Classification
Cloud Functions
Cloud IAM
Cloud Run
Cloud Storage
Clustering
CSS
Data Engineering
Data Modeling
Database
dbt
Decision Tree
Deep Learning
Descriptive Statistics
Differential Equation
Dimensionality Reduction
Discrete Choice Model
Docker
Economics
FastAPI
Firebase
GIS
git
GitHub
GitHub Actions
Google
Google Cloud
Google Search Console
Hugging Face
Hypothesis Testing
Inferential Statistics
Interval Estimation
JavaScript
Jinja
Kedro
Kubernetes
LightGBM
Linux
LLM
Mac
Machine Learning
Macroeconomics
Marketing
Mathematical Model
Meltano
MLflow
MLOps
MySQL
NextJS
NLP
Nodejs
NoSQL
ONNX
OpenAI
Optimization Problem
Optuna
Pandas
Pinecone
PostGIS
PostgreSQL
Probability Distribution
Product
Project
Psychology
Python
PyTorch
QGIS
R
ReactJS
Regression
Rideshare
SEO
Singer
sklearn
Slack
Snowflake
Software Development
SQL
Statistical Model
Statistics
Streamlit
Tabular
Tailwind CSS
TensorFlow
Terraform
Transportation
TypeScript
Urban Planning
Vector Database
Vertex AI
VSCode
XGBoost