はじめに
かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
全 8 回を予定しています。
① 作成する環境の確認
② Apache の導入
③ PHP 8.1 系のインストール
④ Composer のインストール
⑤ timezone, locale の設定
⑥ docker-compose.yml の作成(MySQL の導入)
⑦ Laravel 9 系のインストール
⑧ Apache の設定ファイルの追加
今回は、 ⑤ timezone, locale の設定 についてです。
環境
以下の Docker 環境を構築します。
- Amazon Linux 2
- Apache 2.4
- MySQL 8.0.28
- PHP 8.1.x
- Laravel 9.x
目次
1. timezone, locale
2. Dockerfle の編集
3. Docker イメージとコンテナの再作成
1. timezone, locale
timezone と locale について確認します。
1-1. timezone
タイムゾーン(timezone)には、「協定世界時」(UTC:Universal Time Coordinated)や、日本であれば、UTCに9時間を足した「日本標準時」(JST:Japan Standard Time)があるため、Dokcer コンテナ内のシステムの時刻が日本の時刻になるように JST に設定します。
1-2. locale
ロケールは、ユーザーインターフェイス用の言語別または国別の基本設定のセットです。
プログラムは、ロケール設定をホストシステムの言語から引き出します。とりわけ、ロケールは、指定された地域のプロトコルに従って、用紙サイズ、通貨、日付書式、および数値を表します。
2. Dockerfle の編集
Dockerfle を編集します。
2-1. Dockerfile の確認
前回(④ Composer のインストール)までの Dockerfile を確認します。
FROM amazonlinux:2
RUN yum update -y \
&& yum install -y \
vim \
httpd
RUN amazon-linux-extras install -y epel
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
RUN yum clean metadata \
&& yum install -y \
php81 \
php81-php \
php81-php-mbstring \
php81-php-pdo \
php81-php-xml \
php81-php-fpm \
php81-php-mysqlnd \
php81-php-gd
RUN alternatives --install /usr/bin/php php /usr/bin/php81 1
# composer のインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
CMD [ "apachectl", "-D", "FOREGROUND" ]
2-2. Dockerfile の編集
前回に引き続き、 Dockerfile の編集は、以下のリポジトリを参考にします。
Dockerfile を編集します。
FROM amazonlinux:2
+ # timezone environment
+ ENV TZ=Asia/Tokyo \
+ # locale
+ LANG=ja_JP.UTF-8 \
+ LANGUAGE=ja_JP:ja \
+ LC_ALL=ja_JP.UTF-8
RUN yum update -y \
&& yum install -y \
+ glibc-langpack-ja \
vim \
httpd
RUN amazon-linux-extras install -y epel
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
RUN yum clean metadata \
&& yum install -y \
php81 \
php81-php \
php81-php-mbstring \
php81-php-pdo \
php81-php-xml \
php81-php-fpm \
php81-php-mysqlnd \
php81-php-gd
RUN alternatives --install /usr/bin/php php /usr/bin/php81 1
# composer のインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
CMD [ "apachectl", "-D", "FOREGROUND" ]
timezone, locale に関する下記の記述を追記しました。
# timezone environment
ENV TZ=Asia/Tokyo \
# locale
LANG=ja_JP.UTF-8 \
LANGUAGE=ja_JP:ja \
LC_ALL=ja_JP.UTF-8
glibc-langpack-ja \
TZ=Asia/Tokyo
と記述することで、「日本標準時」(JST)に設定されます(なお、 TZ=JST
としても時刻は「協定世界時」(UTC)のままで、反映されませんでした)。
yum で glibc-langpack-ja
をインストールすることで、ロケールに日本語を設定できるようになります。
3. Docker イメージとコンテナの再作成
Docker コンテナを削除し、 Docker イメージを作り直して、 Docker コンテナを作成・起動します。
3-1. Docker イメージとコンテナの再作成
Docker コンテナを削除します。
docker container rm -f advent-calendar
Docker コンテナを作成・起動します。
※ Dockerfile を infra/docker/php ディレクトリに移動させたので、以下を実行するときは階層を移動します
docker image build -t advent-calendar/advent-calendar:latest .
docker container run -d --name advent-calendar -p 8080:80 advent-calendar/advent-calendar:latest
3-2. Composer のインストール成功の確認
Docker コンテナの中に入ります。
docker container exec -it advent-calendar /bin/bash
時刻を確認するために、 date
コマンドを実行します。
date
# r_yamate @ mbp in ~/Documents/code/advent-calendar on git:backend x [17:41:40]
$ docker compose exec web /bin/bash
bash-4.2# date
2022年 11月 23日 水曜日 17:41:47 JST
bash-4.2#
Docker コンテナ内の時刻が日本標準時に設定されていることが確認できました。
また、日本語で表記されており、日本語の設定もうまくいっていることが伺えますが、 locale コマンドでも確認します。
locale
bash-4.2# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8
言語のほか、色々な設定が日本語に合わせた設定になったようです。
おわりに
今回は、 ⑤ timezone, locale の設定 についての手順でした。
次回は、 ⑥ docker-compose.yml の作成(MySQL の導入) の手順です。
ありがとうございました。
参考にしたサイト