php - 如何在 symfony yml 配置文件中从 docker 获取环境变量

标签 php mysql symfony docker docker-compose

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

最佳答案

在 symfony 中,您可以在 yaml 配置中包含 PHP 文件,您可以在其中设置运行时的参数,覆盖 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']);

关于php - 如何在 symfony yml 配置文件中从 docker 获取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41115003/

相关文章:

php 从字符串中提取表情符号

php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?

php - 将自定义分类中的术语元添加到购物车项目

MySQL CASE更新多列

symfony - 如何防止Symfony2转义html

symfony - 可以在Symfony2 + Twig中使用变量进行翻译吗?

php - Twig 模板转储函数的输出没有样式

php - Facebook iOS 更新 : integrated the conversions APIs with native php

Mysql 程序定期将数据从一个数据库移动到另一个数据库

mysql - 如何在 Mysql 中解决此问题(#1242 - 子查询返回超过 1 行)?