Laravel 6 を Docker 化する。その 2 。 Docker コンテナの PHP とタイムゾーン設定

はじめに

今回行うこと

  • php.ini の date.timezone 等の設定

php:<version>-apache の ini ファイル構成と設定内容

root@37ec29b2d2f2:/var/www/html# php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File:         (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini

root@37ec29b2d2f2:/var/www/html#

php:7.3-apache コンテナ内で確認したところ上記の結果となりました。このことから、

  • /usr/local/etc/php/ に php.ini を置く
  • /usr/local/etc/php/conf.d/ に追加の設定を置く

ということがわかりました。

日本で使いやすい設定にしたいですので、次の内容のファイルを追加して、デフォルトの設定を部分的に上書きすることにしました。

/usr/local/etc/php/conf.d/my.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

PHP 設定を反映する

次の内容で反映させました。

$ git diff --cached
diff --git a/Dockerfile b/Dockerfile
index 0be1576..26f08fb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,6 +13,8 @@ RUN apt-get update && apt-get install -y \
   && apt-get clean \
   && rm -rf /var/lib/apt/lists/*

+COPY ./docker/my.ini /usr/local/etc/php/conf.d/
+
 ENV APACHE_DOCUMENT_ROOT /var/www/html/public
 RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
 RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
diff --git a/docker/my.ini b/docker/my.ini
new file mode 100644
index 0000000..b45be20
--- /dev/null
+++ b/docker/my.ini
@@ -0,0 +1,5 @@
+[Date]
+date.timezone = "Asia/Tokyo"
+[mbstring]
+mbstring.internal_encoding = "UTF-8"
+mbstring.language = "Japanese"

おわりに

が今回の内容です。 以上です。

ディスカッションに参加

1件のコメント

コメントを残す

コメントを残す