我尝试使用.env文件制作环境变量,但它不起作用。
这些是我的步骤:
version "3"
services:
web:
image: php-fpm:5.6.30
env_file:
- .env
这是.env文件
TEST_ENV="HELLO WORLD"
启动容器时它不起作用:
var_dump(getenv("TEST_ENV")); // output NULL
答案 0 :(得分:1)
对我而言似乎有效。也许这可以帮到你:
├── docker-compose.yaml
├── .env
└── myphp
├── Dockerfile
└── script.php
我的.env文件
TEST_ENV="HELLO WORLD"
我的docker-compose.yaml
:
version: "3"
services:
web:
build: ./myphp
env_file: .env
所以我的docker-compose.yaml
将构建图像myphp。 dockerfile如下所示:
FROM php:5.6.30-fpm
COPY script.php /var/script.php
我的script.php
<?php
var_dump(getenv('TEST_ENV'));
exit;
比我执行docker-compose up -d --build
。这将构建我的图像并在其中添加php脚本,它将运行该图像的容器实例。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15f0289bfbe8 test_web "docker-php-entryp..." 3 seconds ago Up 1 second 9000/tcp test_web_1
我正在访问我的容器
$ docker exec -it 15f0289bfbe8 bash
我要去/var
文件夹,我放了我的脚本(检查dockerfile),我正在执行它+也只是打印env var:
root@15f0289bfbe8:/var/www/html# cd /var/
root@15f0289bfbe8:/var# ls
backups cache lib local lock log mail opt run script.php spool tmp www
root@15f0289bfbe8:/var# php -f script.php
string(13) ""HELLO WORLD""
root@15f0289bfbe8:/var# echo $TEST_ENV
"HELLO WORLD"
root@15f0289bfbe8:/var#