如何从symfony ymlconfiguration文件中获取docker的envvariables

在docker-compose.yml中:

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

我怎么能得到这个variables在XMLconfiguration文件中:

 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"] 

在symfony中,可以在yamlconfiguration中包含PHP文件,在这里你可以在运行时设置参数,覆盖来自parameters.yml的静态参数值。

在你的app / config / config.yml中

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

然后使用以下内容创build文件app / config / 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']); 

现在(从Symfony 3.2开始)是在yaml文件中执行此操作的语法:

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

请参阅http://symfony.com/doc/current/configuration/external_parameters.html