前書き
- 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
事前準備
-
Docker Desktop for Mac をインストールする
参考URL:https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81 -
Kitematic をインストールする
→DockerコンテナをGUIで操作できるアプリ。インストール手順はタスクトレイのDockerアイコンから。
docker-composeで設定した共有ディレクトリやポートなどの確認もこれで行いました。
docker-composeでPostgreSQLコンテナを立てる
参考URL
上記を参考に、PostgreSQLのコンテナを日本語環境で建てる。
特に1つ目のリンクはほぼそのまま参考にさせていただきました。とても詳しく記載されているので、当記事よりは1つ目のリンクを参考にしたほうが良いと思います。
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
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