PostgreSQLを使用させて頂きたいとき。
docker-composeでpgAdminと同時起動すると、Webブラウザによるデータベースの管理が可能になり、利便性が大変高くなります。
一方、ロケールを指定せずにデータベースを起動すると、英語モードで動作するため、たとえば抽出条件が日本語の場合に問題が出たり、通貨の表示が「$(ドル)」になったり等、細かい動作で問題が出るようです。
docker-composeを使いつつ、ロケールを日本語にする設定を記録しておこうと思います。
日本語モードのPostgreSQL, pgAdmin4同時起動docker-compose.yaml
以前の(英語モードの)記事はこちらになります。
docker-compose.yamlファイルを少し手直しして、さらにDockerfileを作成しました。
- 新しいdocker-compose.yamlファイルを作成します。
vi docker-compose.yaml
次の内容になります。volumesのラベル:zはSELinux対応のためです。
※19.7.13:pgadminの設定が保存されるように、volumesを変更しました。version: '2' services: db: build: . volumes: - ./postgresql:/var/lib/postgresql/data:z ports: - "5432:5432" environment: POSTGRES_USER: <ユーザ名 admin等> POSTGRES_PASSWORD: <パスワード> POSTGRES_DB: <データベース名> LANG: ja_JP.UTF-8 adm: image: dpage/pgadmin4:latest volumes: - ./pgadmin:/var/lib/pgadmin:z # - ./pgadmin:/var/lib/pgadmin/storage:z ports: - "80:80" - "443:443" environment: PGADMIN_DEFAULT_EMAIL: <ユーザ名> PGADMIN_DEFAULT_PASSWORD: <パスワード>
使用するpostgresqlイメージのバージョン違いにより、6行目は「/var/lib/postgresql/data」が正しい場合と「/var/lib/postgresql」が正しい場合があるようです。docker-compose down後に内容が消えてしまう場合、調整する必要があるようです。
- Dockerfileを作成します。
vi Dockerfile
次の内容になります。
FROM postgres:latest RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 ENV LANG ja_JP.UTF-8
- イメージをビルドします。
docker-compose build
- PostgreSQLとpgAdminを起動します。
docker-compose up -d
日本語化はデータベース作成時に行う必要があります。既に英語版のデータベースが存在する場合、データベースをダンプ後、以前のデータが入っているpostgresqlディレクトリを削除、日本語版のデータベースに内容をリストアする必要があります。
これでTCPポート番号5432でPostgreSQL、ポート番号80と443でpgAdmin4が起動しました。
試しにmoney型のフィールドを持つテーブルを作ってみました。
pgAdminで表示したところ、ちゃんと「\(円)」表示になりました。
psqlコマンドも日本語になりますので、作業効率も上がりそうです。