DockerのApacheで起動時に実行環境をセットする

公式に「こういう環境だけどDTAが動きません」という報告をすると、バージョンアップで対応修正だったり、次からのアクセサリの開発時の実行環境の対応範囲が広がるから、起動できない人は公式への問い合わせもしてくれるといいと思うの。('ω')

概要

PHPのレガシーコードで環境判定にApacheの定数を使っていることがあるので、
Docker環境でもそのスクリプトがそのまま動くよう環境設定を行うことが
ときどきあるのでメモとして残しておきます。

Dockerの設定

docker-compose.ymlの例を記載します。

開発環境の例)

docker-compose.yml
version: '2'
services:
  httpd:
    image: httpd:2.4
    container_name: 'httpd'
    command: /usr/local/apache2/bin/httpd -DFOREGROUND -DDev
    ports:
      - '80:80'
      - '443:443' 

※ 開発以外の環境は、「 -DDev 」を「 -DTest 」や「 -DProd 」に変更する

環境判定

.htaccessで判定する例を記載しておきます。

.htaccess
<IfDefine Dev>
  # 開発環境
  SetEnv APP_ENV development
</IfDefine>
<IfDefine Test>
  # テスト環境
  SetEnv APP_ENV testing
</IfDefine>
<IfDefine Prod>
  # 本番環境
  SetEnv APP_ENV Production
</IfDefine>

phpでの判定例を記載しておきます。

environment.php
<?php

switch (getenv('APP_ENV')) {
  case 'development':
    echo '開発環境';
    break;

  case 'testing':
    echo 'テスト環境';
    break;

  case 'production':
    echo '本番環境';
    break;

  default:
    throw new ErrorException('環境を判定できません');
}

参考サイト

docker-compose.yml
 httpd:
  image: httpd:2.4
  container_name: "httpd"
  command: /usr/local/apache2/bin/httpd -DFOREGROUND -DTEST
  ports:
   - '80:80'
   - '443:443'
[紹介元] PHPタグが付けられた新着投稿 – Qiita DockerのApacheで起動時に実行環境をセットする

  • コメント

    1. 匿名希望
      2018/01/23(火) 04:58:13

      公式に「こういう環境だけどDTAが動きません」という報告をすると、バージョンアップで対応修正だったり、次からのアクセサリの開発時の実行環境の対応範囲が広がるから、起動できない人は公式への問い合わせもしてくれるといいと思うの。(‘ω’)

    記事に戻る

関連記事