7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

完走賞をとって Qiitan を自分にクリスマスプレゼントするAdvent Calendar 2022

Day 5

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑤timezone, localeの設定(全8回)

Last updated at Posted at 2022-12-04

はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
スクリーンショット 2022-11-30 23.31.45.png

全 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 を確認します。

infra/docker/php/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 を編集します。

infra/docker/php/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 の導入) の手順です。

ありがとうございました。

参考にしたサイト

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?