2016-12-13 1 views
1

в Докер-compose.yml:как получить Env переменные из грузчиком в Symfony YML конфигурационный файл

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

, как я могу получить эти переменные в конфигурационном файле YML:

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, вы можете включить PHP файлы конфигурации YAML, где вы можете задать параметры во время выполнения перекрывая ГНА tic значения параметров из параметров .yml.

В вашем приложении/Config/config.yml

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

Затем создайте файл приложения/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']); 
+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 продвинутая-среда-переменный) –