如何使用Docker设置PHP $ _SERVER变量?

use*_*925 4 php apache docker docker-compose

我用Docker创建了一个PHP/Apache/MySQL开发环境,并希望设置我可以$_SERVER在PHP中使用的变量.

通常我会在我的虚拟主机中配置类似的东西

SetEnv ENV "developement"

有没有办法用我的docker_compose.yml文件做到这一点?我将尝试environment: - ENV=developement在我的docker-compose文件中使用,但它不起作用.

这是我的 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 Code Online (Sandbox Code Playgroud)

和我的 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
Run Code Online (Sandbox Code Playgroud)

Tar*_*ani 8

考虑下面的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
Run Code Online (Sandbox Code Playgroud)

现在运行容器

docker run -it -e FIRST_NAME=TARUN -e LAST_NAME=LALWANI -p 80:80 4ba2aa50347b
Run Code Online (Sandbox Code Playgroud)

测试

$ curl localhost/first.php
TARUN

$ curl localhost/last.php
$
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样只能FIRST_NAME访问,因为我们PassEnv在apache config中暴露了相同的using 指令