2017-09-14 31 views
2

DockerでPHP/Apache/MySQL開発環境を作成しましたが、PHPで$_SERVERで使用できる変数を設定したいと思います。

通常、私は私の仮想ホスト

SetEnv ENV "developement"

にそのような何かを設定します私のdocker_compose.ymlファイルでそれを行う方法はありますか? ドッキング用ファイルにenvironment: - ENV=developementを使用してみますが、動作しません。ここで

Dockerfile

FROM php:5.6-apache 

RUN apt-get update -y && apt-get install -y libpng-dev curl libcurl4-openssl-dev 

RUN docker-php-ext-install pdo pdo_mysql gd curl 

RUN a2enmod rewrite 

RUN service apache2 restart 

と私のdocker-compose.yml

version: '2' 

services: 
    webserver: 
    build: ./docker/webserver 
    image: dev_web 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes: 
     - /pathtodev/www:/var/www/html 
    links: 
     - db 
    environment: 
    - ENV=developement 

    db: 
    image: mysql:5.7 
    ports: 
     - "3306:3306" 
    volumes: 
     - ./db:/var/lib/mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=****** 
     - MYSQL_DATABASE=db_dev 
+0

でそのように働いてます。https:/ /docs.docker.com/compose/environment-variables/#substituting-environment-variables-in-compose-files – ficuscr

+0

はい、それは私が 'environment'に関する情報を見つけた場所ですが、私のvarは' $ _SERVER'には現れません – user2993925

+1

すべきか?参照:['getenv'](http://php.net/manual/en/function.getenv.php)...または$ _ENV ...正直に思い出すことはできません。他の要因が変動する可能性があります... EGPCS? – ficuscr

答えて

4

は今

を使用してコンテナを実行 Dockerfile 以下

FROM php:5.6-apache 

RUN apt-get update -y && apt-get install -y libpng-dev curl libcurl4-openssl-dev 

RUN docker-php-ext-install pdo pdo_mysql gd curl 

RUN a2enmod rewrite 

RUN service apache2 restart 

RUN echo 'PassEnv FIRST_NAME' > /etc/apache2/conf-enabled/expose-env.conf 
RUN echo '<?php echo $_SERVER["FIRST_NAME"];' > /var/www/html/first.php && echo '<?php echo $_SERVER["LAST_NAME"];' > /var/www/html/last.php 

を検討されますあなたは私たちがApache設定インサイダーで容器を同じ使用PassEnvディレクティブをさらさためだけFIRST_NAMEは、アクセスすることができます見ることができるように

docker run -it -e FIRST_NAME=TARUN -e LAST_NAME=LALWANI -p 80:80 4ba2aa50347b 

テスト

$ curl localhost/first.php 
TARUN 

$ curl localhost/last.php 
$ 

0

私は、これは知っています古いスレッドだが、別の解決策は、あなたのドッカーの作成中に、ENVの前にある " - "を削除する必要があり、 "="の代わりに ":"にする必要があるということです。

それは、このように見えることになります:ドキュメントを参照してください....

version: '2' 

services: 
    webserver: 
    build: ./docker/webserver 
    image: dev_web 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes: 
     - /pathtodev/www:/var/www/html 
    links: 
     - db 
    environment: 
     ENV: developement 

    db: 
    image: mysql:5.7 
    ports: 
     - "3306:3306" 
    volumes: 
     - ./db:/var/lib/mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=****** 
     - MYSQL_DATABASE=db_dev 

が、少なくともenvironment`セクションが有望に見える `そのバージョン3.

関連する問題