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)
考虑下面的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 指令