2016-12-13 64 views
1

在泊坞窗,compose.yml:得到ENV变量文件

mysql: 
    image: mysql:latest 
    container_name: mysql 
    environment: 
    - MYSQL_ROOT_PASSWORD=root 
    - MYSQL_DATABASE=symfony 
    - MYSQL_USER=symfony 
    - MYSQL_PASSWORD=symfony 

如何我能得到这个变量阳明配置文件:

parameters: 
    database_host: 172.17.42.4 
    database_port: 3306 
    database_name: symfony 
    database_user: symfony 
    database_password: symfony 

在$ _ SERVER他们如下所示:

$_SERVER["SYMFONY_MYSQL_ENV_MYSQL_DATABASE"], 
$_SERVER["SYMFONY_MYSQL_PORT_3306_TCP_ADDR"], 
$_SERVER["SYMFONY_MYSQL_ENV_MYSQL_PASSWORD"], 
$_SERVER["SYMFONY_MYSQL_ENV_MYSQL_USER"] 

回答

4

在symfony中,您可以在yaml配置中包含PHP文件,您可以在其中设置运行时覆盖sta的参数来自parameters.yml的tic参数值。

在您的应用程序/配置/ config.yml

imports: 
    - { resource: parameters.yml } 
    - { resource: parameters.php } 

然后创建文件app /配置/ parameters.php,内容如下

<?php 
// app/config/parameters.php 

$container->setParameter('database_name', $_SERVER['SYMFONY_MYSQL_ENV_MYSQL_DATABASE']); 
$container->setParameter('database_host', $_SERVER['SYMFONY_MYSQL_PORT_3306_TCP_ADDR']); 
$container->setParameter('database_user', $_SERVER['SYMFONY_MYSQL_ENV_MYSQL_USER']); 
$container->setParameter('database_password', $_SERVER['SYMFONY_MYSQL_ENV_MYSQL_PASSWORD']); 
+0

感谢您的回复,这真的很有用! – Zhanat

+0

我很乐意提供帮助。那么请接受答案。 –

2

有现在(如Symfony的3.2)是一个语法为此在YAML文件:

# app/config/parameters.yml 
parameters: 
    database_host: '%env(DATABASE_HOST)%' 

看到http://symfony.com/doc/current/configuration/external_parameters.html

+0

虽然这不适用于布尔变量 - 请参阅https://github.com/symfony/symfony/issues/22151 ...它似乎已在Symfony 3.4中修复(请参阅https://symfony.com/blog/新功能于symfony的-3-4 - 高级 - 环境变量) –