🐿️
[Playwright]をdockerで動かす際のlocale設定について
Docker を使ってコンテナで動かしていた Playwright でスクリーンショットを撮影した際に、input の placeholder が yyyy/mm/dd になっていました。
playwright の locale を日本語にするために、playwright.config.ts
で以下の設定をしましたが、解決しませんでした。
use: {
...
locale: "ja-JP",
},
環境
Dockerfile は以下のようにしていました。
FROM mcr.microsoft.com/playwright:v1.43.0-jammy
WORKDIR /playwright
# 依存関係のインストール
RUN npm ci
問題点
dockerfile みて気づく人が大半だと思いますが、コンテナ自体のロケール設定がされていないのが原因でした。
試しにコンテナ内でロケールを確認すると以下のように POSIX となっていました。
$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
locale が設定されていないことがわかります。
基本的にイメージには最低限の locale 設定しかされていないことが多いとのことです。
解決策
イメージのディストリビューションは ubuntu なので、以下の設定で日本語の locale を設定できました。
# ロケール設定
RUN apt-get update && \
apt-get install -y language-pack-ja
ENV LANG ja_JP.UTF-8
これにより、コンテナ内のロケールが日本語に設定され、Playwright で撮影するスクリーンショットの input の placeholder も日本語になりました。
余談
ubuntu では以下の設定もよく挙げられているので以下のようなコマンドも試しましたが、コンテナ内の locale がうまく更新されていませんでした。
RUN apt-get update
RUN apt-get -y install language-pack-ja && /
update-locale LANG=ja_JP.UTF-8
こちらの記事が参考になりましたが、どうやら update-locale は/etc/default/locale を更新しますが、docker run では etc/default/locale の変更が再読み込まされないということのようです。
参考
Discussion