En docker-compose.yml:

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

Cómo puedo obtener estas variables en el archivo de configuración yml:

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

En $ _SERVER se obtienen como:

$_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"]
3
Zhanat 13 dic. 2016 a las 09:38

2 respuestas

La mejor respuesta

En Symfony, puedes incluir archivos PHP en la configuración de yaml, donde puedes establecer parámetros en tiempo de ejecución anulando los valores de parámetros estáticos de parameters.yml.

En su aplicación / config / config.yml

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

Luego crea el archivo app / config / parameters.php con el siguiente contenido

<?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']);
6
Artur Cichosz 13 dic. 2016 a las 08:35

Ahora (a partir de Symfony 3.2) hay una sintaxis para hacer esto en archivos yaml:

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

Consulte http://symfony.com/doc/current/configuration/external_parameters.html

3
inwerpsel 29 jun. 2017 a las 12:03