docker-composeで日本語モードのPostgreSQLとpgAdmin4を起動するには

PostgreSQLを使用させて頂きたいとき。

docker-composeでpgAdminと同時起動すると、Webブラウザによるデータベースの管理が可能になり、利便性が大変高くなります。

一方、ロケールを指定せずにデータベースを起動すると、英語モードで動作するため、たとえば抽出条件が日本語の場合に問題が出たり、通貨の表示が「$(ドル)」になったり等、細かい動作で問題が出るようです。

docker-composeを使いつつ、ロケールを日本語にする設定を記録しておこうと思います。


日本語モードのPostgreSQL, pgAdmin4同時起動docker-compose.yaml

以前の(英語モードの)記事はこちらになります。

docker-compose.yamlファイルを少し手直しして、さらにDockerfileを作成しました。

  1. 新しい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後に内容が消えてしまう場合、調整する必要があるようです。

  2. 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
  3. イメージをビルドします。
    docker-compose build
  4. PostgreSQLとpgAdminを起動します。
    docker-compose up -d

日本語化はデータベース作成時に行う必要があります。既に英語版のデータベースが存在する場合、データベースをダンプ後、以前のデータが入っているpostgresqlディレクトリを削除、日本語版のデータベースに内容をリストアする必要があります。


これでTCPポート番号5432でPostgreSQL、ポート番号80と443でpgAdmin4が起動しました。

試しにmoney型のフィールドを持つテーブルを作ってみました。

pgAdminで表示したところ、ちゃんと「\(円)」表示になりました。

psqlコマンドも日本語になりますので、作業効率も上がりそうです。

スポンサーリンク

フォローする

スポンサーリンク