Django-PostGIS-pgAdmin(Docker-Compose)2
自分の勉強用備忘メモです。
(注意)利用しているツールについて、古いものがあります。
Django-PostGIS-pgAdmin(Docker-Compose)の追加学習です。
自分用 : Docker folder 13 - 15
実行環境構築
フォルダ構成
C:.
│ docker-compose.yml
│ Dockerfile
└─ requirements.txt
docker-compose.yml
docker-compose.yml
version: "3.9"
services:
s_database:
image: postgis/postgis:14-3.3
container_name: c_postgis
ports:
- "5432:5432"
volumes:
- postgres_volume:/var/lib/postgresql/data
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
hostname: postgres
restart: always
user: root
s_pgadmin:
image: dpage/pgadmin4:5.0
container_name: c_pgadmin4
ports:
- "8001:80"
volumes:
- pgadmin4_volume:/var/lib/pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: root
PGADMIN_DEFAULT_PASSWORD: root
hostname: pgadmin4
depends_on:
- s_database
restart: always
s_web:
build: .
container_name: c_django
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
volumes:
- .:/code
links:
- s_database
volumes:
postgres_volume:
external: true
pgadmin4_volume:
external: true
dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
requirements.txt
Django
psycopg2
【環境:local】作業フォルダへ移動
powershell
cd C:\[作業フォルダ]
【環境:local】Volumeの作成
powershell
docker volume create postgres_volume
docker volume create pgadmin4_volume
【環境:local】実行する
powershell
docker-compose run s_web django-admin.py startproject composeexample .
フォルダ構成
C:.
│ docker-compose.yml
│ Dockerfile
│ manage.py
│ requirements.txt
│
└─composeexample
settings.py
settings.pyc
urls.py
urls.pyc
wsgi.py
wsgi.pyc
__init__.py
__init__.pyc
設定を修正する
\composeexample\settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 's_database',
'PORT': 5432,
}
}
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
【環境:local】実行する
powershell
docker-compose up
【環境:local】確認する
http://localhost:8000/
【環境:c_postgis】PostGISを有効化する
powershell
psql -h 127.0.0.1 -p 5432 -U postgres
sql
CREATE EXTENSION postgis;
【環境:c_postgis】(参考)コマンド
# ユーザー切り替え
su postgres
# ファイル一覧
ls -al
ls -lh
# 現在のパス
pwd
# 移動
cd 移動先
# ファイルの検索
find -name "ファイル名"
# ディレクトリ作成
mkdir ディレクトリ名
# ディレクトリ削除
rm -r
【環境:c_postgis】shp2pgsqlのインストール
apt update
apt -y install postgis
【環境:c_postgis】unzipのインストール
apt-get install zip
【環境:c_postgis】vi(vim)インストール
apt-get install vim
【環境:c_postgis】Zip格納用ディレクトリ作成
cd /tmp
mkdir GIS
cd /tmp/GIS
【環境:local】GISデータのダウンロード
【環境:local】Zipをコンテナにコピー
ローカルのターミナルから実行
Zipを格納しているフォルダに移動してから実行
docker cp N03-20220101_13_GML.zip c_postgis:/tmp/GIS/N03-20220101_13_GML.zip
(参考)
ローカルのターミナルから実行
コンテナからローカルへ
docker cp c_postgis:/tmp/GIS/N03-20220101_13_GML.zip N03-20220101_13_GML.zip
【環境:c_postgis】作業フォルダに移動
cd /tmp/GIS
【環境:c_postgis】Zipの解凍
unzip N03-20220101_13_GML.zip
【環境:c_postgis】SQL作成
shp2pgsql -p ./N03-22_13_220101 gyosei_kuiki > ./create_gyosei_kuiki.sql
shp2pgsql -W cp932 -a ./N03-22_13_220101 gyosei_kuiki > ./insert_gyosei_kuiki.sql
【環境:c_postgis】SQLを修正
vi create_gyosei_kuiki.sql
SELECT AddGeometryColumn('','gyosei_kuiki','geom','4326','MULTIPOLYGON',2);
【環境:c_postgis】SQL実行
psql -U postgres postgres < ./create_gyosei_kuiki.sql
psql -U postgres postgres < ./insert_gyosei_kuiki.sql
【環境:local】pgAdminで確認
http://localhost:8001/
ターミナルで出力されているIPアドレスでデータベースに接続する。
pgadmin4 | ::ffff:XXX.XXX.XXX.XXX
sql
select * from gyosei_kuiki;
参考&引用:
クイックスタート・ガイド:Compose と Django
[docker] postgreSQL12 + PostGIS3 環境を作成する
postgreSQLへのshp fileのimport
Docker for WindowsでPostgres+pgAdminのコンテナをたてる
pgAdmin4 v3.3+PostGISがすごい!
国土交通省にあるGISデータをPostGISへインポート(2022年版)
GISっ子/コンテナでshp2pgsql
PostGISで地理空間情報を管理してみた!
AddGeometryColumn
第4章 PostGISを使う: データ管理とクエリ