LoginSignup
23
25

More than 3 years have passed since last update.

dockerでPostGISを入れたPostgreSQL環境構築

Last updated at Posted at 2018-11-17

docker-composeでPostgre環境を構築するところから、データの確認までを紹介します。

環境

PostgreSQL 10.1
PostGIS 2.5

構成

今回は下記のような構成になります。dataディレクトリは自動で作成されますので、作らなくて問題ありません。

.
├── docker
│   └── db
│       └── data
│       └── sql
│           ├── create-tables.sql
│           ├── init-database.sh
│           └── insert-data.sql
├── docker-compose.yml
└── init-db.sh

構築

1. docker-compose.yml

まずは、docker-compose.ymlでPostgreコンテナを用意します。

docker-compose.yml
version: '3'

services:
  db:
    container_name: postgre_container
    image: mdillon/postgis
    environment:
      POSTGRES_DB: postgre
      POSTGRES_USER: docker
      POSTGRES_PASSWORD: docker
    volumes:
    - ./docker/db/data:/var/lib/postgresql/data
    - ./docker/db/sql:/docker-entrypoint-initdb.d
    ports:
    - 5432:5432

2. sql

初期テーブル用のsql

create-tables.sql
-- 拡張をインストール
CREATE EXTENSION IF NOT EXISTS postgis;

-- テーブル削除
DROP TABLE IF EXISTS test_table;

-- テーブル作成
CREATE TABLE IF NOT EXISTS test_table
(
    gid    INTEGER PRIMARY KEY,
    geom   GEOMETRY(POINT, 4612)
);

初期データ用sql

insert-data.sql
INSERT INTO test_table (gid, geom) SELECT 1, ST_GeomFromText('POINT(135 35)', 4612);

sql実行用シェルスクリプト

init-database.sh
#!/usr/bin/env bash

psql -U docker -d postgre < "/docker-entrypoint-initdb.d/create-tables.sql"
psql -U docker -d postgre < "/docker-entrypoint-initdb.d/insert-data.sql"

3. DB初期化シェルスクリプト

コマンドで打つのは少々面倒なので・・・。

init-db.bash
#!/bin/sh
docker-compose exec db bash -c "chmod 0775 docker-entrypoint-initdb.d/init-database.sh"
docker-compose exec db bash -c "./docker-entrypoint-initdb.d/init-database.sh"

実行

docker-compose起動

$ docker-compose up -d

たまに起動して、そのあとすぐに落ちることがあります。その際はまた上記のコマンドで起動すればOKです。

DB初期化
コンテナ立ち上げてから数秒待つ方がいいかもです。

$ ./init-db.sh

確認

1. pdAdminダウンロード

pgAdmin 4をダウンロードして確認できます。

2. 接続

スクリーンショット 2018-11-12 13.52.47.png

3.結果

スクリーンショット 2018-11-12 13.58.11.png

23
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25