Sailの環境を構築して、tinkerで日本語を表示すると以下のようになりました。
Dockerfileをカスタマイズすることで、日本語も表示できるようになったので、その時の手順を書いておきます。
% sail tinker
Psy Shell v0.11.8 (PHP 8.1.10 — cli) by Justin Hileman
>>> print('あああ')
<E3><81><82><E3><81><82><E3><81><82><E2><8F><8E>
=> 1
環境
% sail artisan -V
Laravel Framework 9.31.0
% sail version
Docker Compose version v2.10.2
対応方法
docker-compose.ymlのservices.laravel.test.build.contextで指定したバージョンに対応するDockerfileをカスタマイズします。
ここでは、services.laravel.test.build.contextが./docker/8.1
になっていることを前提とします。
1. Dockerfileに、# 日本語対応 追加ここから
から# 追加ここまで
の部分を追加
docker/8.1/Dockerfile
・・・・・・・・・・省略・・・・・・・・・・
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 日本語対応 追加ここから
RUN apt-get update && apt-get install -y language-pack-ja && \
update-locale LANG=ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
# 追加ここまで
RUN apt-get update \
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
・・・・・・・・・・省略・・・・・・・・・・
2. Dockerイメージを再ビルドしてからSail起動
% sail build --no-cache
% sail up -d
tinkerで日本語が表示されました。
% sail tinker
Psy Shell v0.11.8 (PHP 8.1.10 — cli) by Justin Hileman
>>> print('あああ')
あああ⏎
=> 1
補足
Sailの環境は、初期状態ではDockerfileが存在しませんでした。
sail artisan sail:publish
を実行すると、Dockerfileとその他の設定ファイルが、アプリケーションのルートディレクトリ内のdockerディレクトリに配置されます。
https://readouble.com/laravel/9.x/ja/sail.html