結論
- サービスコンテナでLOCALEに
ja_JP.UTF-8
を設定することはできない
- 自力でLOCALEを追加するイメージを作って、
docker run
で起動する
Dockerfile
FROM postgres:11.5
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
GitHub Actionsのワークフロー設定
name: postgresql
on: [push]
jobs:
postgresql:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: PostgreSQL container build & run
run: |
docker build -t postgresql_i .github/workflows
docker run -d --name postgresql_t -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e LC_ALL=ja_JP.UTF-8 postgresql_i
- name: wait for db
run: until docker exec postgresql_t pg_isready -U postgres; do sleep 1; done
- name: show locale
run: docker exec postgresql_t psql -U postgres -c "SHOW LC_COLLATE;"
ファイル構成
└ .github
└ workflows
├ Dockerfile
└postgresql.yml
- Dockerfileはどこに置くのが良いのかわからず
.github/actions
みたいなフォルダ作ってそこに置くのが良い?
出力
Run docker exec postgresql_t psql -U postgres -c "SHOW LC_COLLATE;"
lc_collate
-------------
ja_JP.UTF-8
(1 行)
詳細
- PostgreSQLはデフォルトのLOCALE(
en_US.utf8
)だと日本語のソートが想定外の動きをする場合がある
- Linuxでは設定したいLOCALEである
ja_JP.UTF-8
はインストールする必要がある
- GitHub ActionsでPostgreSQLを使用する場合、サービスコンテナを使用するのが定石な様子
- サービスコンテナ内で起動前にコマンド実行ができないようなので、LOCALEのインストールができない
- 自前でimageを作る必要がある
- ↑の例ではDockerfileをリポジトリ内に置いてbuildしているが、DockerHubなり、GitHub Container Registryなりに置いてそれを使っても良い
参考