LoginSignup
3
7

More than 3 years have passed since last update.

MacでDocker上に日本語環境のPostgreSQLを建てる

Posted at

前書き

  • Docker に PostgreSQL コンテナを日本語環境でサクッと建てたい!
  • PostgreSQL のバージョンは最新のバージョンにしたい!
  • Mac で作業したい!
  • AWS RDS の PostgreSQL とバージョンを合わせた PostgreSQL コンテナを建てたい!

を叶えるためのメモ。
MacでDocker上に日本語環境のMySQL8.0を建てる の PostgreSQL 版です。
タイトルで Mac と謳っていますが上記の MySQL 版と同様に Windows でもほぼ同じ手順です。
違いは Docker のインストーラーが Mac 用か Windows 用かだけです。
なお、このページの文体・構成は上記 MySQL 版 に合わせています。

環境

  • Mac 10.15.1 (Catalina)
  • Docker for Mac

事前準備

  1. Docker Desktop for Mac をインストールする
     参考URL:https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81

  2. Kitematic をインストールする
     →DockerコンテナをGUIで操作できるアプリ。インストール手順はタスクトレイのDockerアイコンから。
      docker-composeで設定した共有ディレクトリやポートなどの確認もこれで行いました。

docker-composeでPostgreSQLコンテナを立てる

参考URL

上記を参考に、PostgreSQLのコンテナを日本語環境で建てる。
特に1つ目のリンクはほぼそのまま参考にさせていただきました。とても詳しく記載されているので、当記事よりは1つ目のリンクを参考にしたほうが良いと思います。

docker-compose.yml
version: '3'
volumes:                           # ※ホストOSで永続化
    postgres_data:
        driver: 'local'
services:
  postgres:
    build:
      context: ./postgres
      dockerfile: Dockerfile
    container_name: "postgres_db"
    environment:
      POSTGRES_PASSWORD: postgres  #スーパーユーザ(postgres)のパスワード
      POSTGRES_USER: test          #ユーザアカウント
      POSTGRES_PASSWORD: password  #ユーザアカウントのパスワード
      POSTGRES_DB: testDb          #DB名
      TZ: "Asia/Tokyo"
    ports:
      - 15432:5432
    volumes:
      - postgres_data:/var/lib/postgresql/data    # ※ホストOSで永続化
      - ./postgres/sql:/docker-entrypoint-initdb.d
Dockerfile
FROM postgres:12.1
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.utf8

上記のディレクトリイメージは以下の通り。

├── docker-compose.yml
└── postgres
    ├── Dockerfile (上記のファイル)
    └── sql (ディレクトリ)

接続確認は適当なDBクライアントでOK。 当方はDBeaverで確認しました。

初期構築用のCreateTableやInsertなどのSQLファイルはsqlディレクトリに放り込むイメージです。

PostgreSQLのファイルをホストOS側で永続化する必要がない(コンテナ内で保持する)場合は、docker-compose.xml の ※ホストOSで永続化 とコメントしている部分の設定を削除してください。

メモ

日本語を使用するための設定が MySQL 版 で記載したものと違うけど?

そもそもMySQLとPostgreSQLの各Docker Hub の Official ページで公開されているコンテナのDockerfile内のロケール・言語の設定が異なるため。
MySQL 版の Dockerfile では元になっているDebianのロケール・言語設定をそのまま使用すようになっているため、ロケール・言語として日本語を使用するための設定が必要になります。
反面 PostgreSQL 版 のDockerfile ではUTF-8を使用する設定がされているため、ロケールだけ変更すればOKとなっています。

AWS RDS for PostgreSQL とバージョンを揃えたい

Amazon RDS for PostgreSQL のよくある質問 を見ると、AWS RDS for PostgreSQL で使用されているバージョンは、
PostgreSQL 9.4、9.5、9.6、10、および 11 となっています。(当ページ記載時点)
そのため、上記バージョンを使用するには Dockerfile の FROMタグ部分を以下のいずれかにすればOK
※ここでは簡素に記載しています。正確な情報・詳細は PostgreSQL の Docker Hub Officialページ を参照してください。

  • FROM postgres:9.4
  • FROM postgres:9.5
  • FROM postgres:9.6
  • FROM postgres:10
  • FROM postgres:11

Postgresコンテナの永続化用のボリュームを削除したい

Docker volumeの削除 を参考に、
当ページ内のコンテナの場合は以下で削除できます。

docker volume rm postgresql_postgres_data

ボリュームの一覧を確認する場合は以下のコマンドです。

docker volume ls
3
7
0

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
3
7