0
0

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 3 years have passed since last update.

php.ini 内で環境変数を参照した設定ができる

Last updated at Posted at 2020-03-08

docker-composeで開発環境を構築していて、
.env に各コンテナ名の情報を定義しておき
docker-compose.yaml の env_fileに読み込ませ
各コンテナ間の疎通に環境変数に定義したコンテナ名を利用したりしていた。

.env
#docker-composeプロジェクト名定義
COMPOSE_PROJECT_NAME=projecta
#php(web)コンテナ名
WEBCONTAINER=projecta_web_1
#mysqlコンテナ名
DBCONTAINER=projecta_mysql_1
docker-compose.yaml
  env_file:
   .env

こうしておくと、phpのスクリプト内で環境変数を使ってDBコンテナを指定できる

php
// DB接続先定義
define('DB_HOST', getenv("DBCONTAINER"));

phpのセッション保存用にmemcachedのコンテナも立ち上げていて
こちらはcompose内で定義しているサービス名をphp.iniにベタ書きしていたけど、
php.ini内でも環境変数が使える様子

■変更前

docker-compose.yaml
 //memcached のサービス定義
 memcached:
php.ini
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = memcached
session.save_path = memcached:11211

↓↓↓

■変更後

.env
#memcachedコンテナ名
MEMCACHEDCONTAINER=projecta_memcached_1

${変数名}で参照ができる

php.ini
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = memcached
session.save_path = ${MEMCACHEDCONTAINER}:11211

https://www.php.net/manual/ja/configuration.file.php

php.iniで環境変数を使うことは今までなかったけど、
dockerでコンテナ間通信で利用するコンテナ名はできるだけ外から
注入する形で統一したかったので勉強になった。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?