一尘不染

如何从symfony yml配置文件中的docker中获取env变量

docker

在docker-compose.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"]

阅读 413

收藏
2020-06-17

共1个答案

一尘不染

在symfony中,可以将PHP文件包含在yaml配置中,在其中可以在运行时设置参数,以覆盖parameters.yml中的静态参数值。

在您的app / config / config.yml中

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

然后使用以下内容创建文件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']);
2020-06-17