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

2023-11-29

在 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']);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 symfony yml 配置文件中从 docker 获取环境变量 的相关文章

随机推荐

  • 如何在 Windows 上为 ruby​​ 安装“byebug”?

    我是 ruby 新手 正在尝试设置我的开发环境 Windows 10 我已经安装了ruby和rails 但无法安装byebug 据我了解 我首先需要 DevKit 所以我按照这里的指南安装了它 https github com onecli
  • 当派生类方法不可行时,为什么 C++ 重载决策不查看基类方法? [复制]

    这个问题在这里已经有答案了 编译失败的例子 class A public int f int a return a class B public A public int f int a int b return a b int calcu
  • Tkinter IntVar 返回 PY_VAR0 而不是值

    我有一个复选按钮和一个IntVar与之关联的对象 但是当我尝试获取该值时var 我正在接收PY VAR0 这是我的代码 from tkinter import root Tk def show state print var var Int
  • 具有多个依赖项的 jQuery ajax 调用链

    我不太懂魔法deferred使用 jQuery 的对象 假设以下代码 function callWebService uri filter callback var data if filter filter data filter fil
  • jQuery animate() 更改文本

    我现在刚刚迈出了关于 jQuery animate 的第一步 我试图制作一个演示类型的东西只是为了练习 但我似乎无法使用 animate 函数更改动画中间的 div 文本 这是我当前的代码
  • pandas 中 max 的列标签

    我正在尝试从 pandas 数据框中提取行和贡献列标签中的最大值 例如 A B C D index x 0 1 2 3 y 3 2 1 0 我期望以下输出 A B C D Maxv Con index x 0 1 2 3 3 D y 3 2
  • 在 Firestore for Swift 中按时间戳传递和过滤项目

    我正在尝试在 Firestore 中传递今天的日期Timestamp在我的应用程序中 我得到这样的今天的日期 formatter dateFormat MMMM d yyyy let result formatter string from
  • 运行 Android 4.04 的 socket.connect() Galaxy Tab 2 上出现 NullPointer 异常

    我似乎在 socket connect 上遇到了这个奇怪的错误 09 18 14 41 22 968 W System err 2593 java lang NullPointerException 09 18 14 41 22 968 W
  • 我可以安装旧版本的 VS 扩展“Web Essentials 2012”吗?

    它删除了我一直依赖的 TypeScript 功能 现在我早上的工作效率看起来相当不错 我使用的是一台干净的机器 但它已经引入了新的 3 0 版本 该版本缺少我最受益的部分 您可以使用以下链接将版本恢复到 2 9 http vswebesse
  • 相当于iOS中的R

    在 android 中 我们有代表资源的 R 类 其中我们引用了所有资源 并且可以在代码中轻松访问它们 iOS 中有类似的吗 我有这个疑问 因为我希望能够定义具有不同值的多个文件 例如 ViewController1 的默认值 ViewCo
  • 将 PredicateBuilder 与 VB.NET 结合使用

    我已在单独的 C 项目中重新创建了 Predicatebuilder 类 并尝试在 VB NET 项目中使用它 但我不断收到以下错误 重载解析失败 因为没有可访问的 或 接受此数量的参数 当我像这样使用它时 Dim predicate Pr
  • XCeed PropertyGrid 自定义 IntegerUpDown

    我试图将不同的增量值分配给对象的不同字段 例如 考虑一个班级有谁int1 and int2 当我设置ShowAdvancedOptions为我的真实PropertyGrid 整数向上向下按钮放入文本框中没有问题 但我希望能够编辑数字单独增加
  • 如何在gganimate中使两帧之间的过渡时间更长

    我正在使用 gganimate 创建散点图的多个帧的动画 每个帧对应于一年 我想强调两个特定的连续帧之间的变化 以便这两个帧在其他帧中脱颖而出 但我不知道该怎么做 这是我的数据和代码的示例 structure list x 1 6 y 2
  • 如何终止 BufferedInputStream .read() 调用

    我正在编写一个程序来从服务器下载非常大的文件 2GB 我编写的程序能够恢复部分完成的下载 为了模拟糟糕的互联网连接 我在下载过程中将以太网线从路由器中拔出 不幸的是 这导致我的程序挂起以下调用 while bytesRead in read
  • 使用正则表达式验证 IP

    我需要验证格式为 000000000 到 255255255 的 IP 范围 3 组数字之间没有任何分隔符 最终 IP 所包含的三组中的每一组都应为 000 是的 用 0 填充 到 255 由于这是我的第一个 stackoverflow 条
  • 如何从远程主机的以太网地址获取其IP地址?

    我正在寻找一些 Linux 代码来从以太网地址查找 IP 地址 我想我必须做一些反向 A RP 欺骗 但我没有找到任何例子 http compnetworking about com od networkprotocolsip f conv
  • Android 谷歌地图在 Zoom 上调整标记大小

    我需要在一个较小的区域中显示大约 30 个标记 当用户更改缩放比例时 是否可以调整 Google Maps API V2 标记的大小 或者我应该使用较小的图像 提前致谢 如果你想在缩放时做一些事情 你可以创建一个扩展原始MapView的自定
  • 副SIM卡的MNC和MCC

    我知道使用TelephonyManager我们可以获得我们网络提供商的MNC和MCC TelephonyManager tel TelephonyManager getSystemService Context TELEPHONY SERV
  • 如何在Python中只打印一个新行? “\n”没有给我想要的效果

    我很清楚print n 但这在我的cmd中给出了这个结果 第一个输出 带有 原始 列表 继续到下一行 但使用 n似乎跳过了一行 我怎样才能确保print pretty函数转到下一行 而不是跳过一行 到目前为止 这是我的代码 board fo
  • 如何在 symfony yml 配置文件中从 docker 获取环境变量

    在 docker compose yml 中 mysql image mysql latest container name mysql environment MYSQL ROOT PASSWORD root MYSQL DATABASE