未找到环境变量symfony

时间:2018-06-07 14:13:53

标签: php symfony docker symfony-3.3

我有一个泊坞容器:

services:
php-fpm:
    build:
        context: ./docker/php-fpm

    volumes:
        - ./symfony:/home/home
    container_name: php
    ports:
        - "9004:9001"
    networks:
        - local
    working_dir: /home/home
    environment:
        - DATABASE_HOST=test
        - DATABASE_PORT=
        - DATABASE_NAME=test

我做了:

  1. docker-compose build --no-cache
  2. docker-compose up
  3. 清除缓存
  4. 当我刷新页面时,我得到:Environment variable not found: "DATABASE_HOST".。我不明白的问题是什么。我花了很多时间分析这个问题。你对此有所了解吗? Thx提前。顺便说一下,docker inspect我看到所有这些环境变量已分配。

2 个答案:

答案 0 :(得分:1)

我自己遇到了这个问题。您必须在php-fpm.conf中显式映射您想要访问php / symfony的环境变量,如:

[www]
env[MY_ENV_VAR_1] = 'value1'
env[MY_ENV_VAR_2] = 'value2'

然而,这似乎不适用于来自主机的实际环境变量!

这里有一个很长的讨论(连同几个,在我看来,这个问题的艰苦解决方法:https://groups.google.com/forum/#!topic/docker-user/FCzUbjTIp_0

我已经在pool.d配置文件中成功完成了它,如下所示:

env[DATABASE_HOST] = $DATABASE_HOST
env[DATABASE_PORT] = $DATABASE_PORT
env[DATABASE_NAME] = $DATABASE_NAME

我只是将其作为docker文件的一部分添加:

ADD fpm/app.pool.conf /etc/php5/fpm/pool.d/

答案 1 :(得分:1)

如果您是从官方PHP Docker映像扩展而来的,它将为您设置clear_env = no,也可以在映像的池配置中自行设置。

这是官方映像中的line adding clear_env = no。您只需要将其添加到FPM池配置中即可,或者您可以按Robert的意愿将它们一个接一个地添加。