.env文件可以创建环境变量吗?

时间:2017-04-13 09:15:24

标签: docker-compose

我尝试使用.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

1 个答案:

答案 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#