簡體   English   中英

如何從symfony yml配置文件中的docker獲取env變量

[英]how get env variables from docker in symfony yml config file

在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']);

現在(從Symfony 3.2開始)是在yaml文件中執行此操作的語法:

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

請參閱http://symfony.com/doc/current/configuration/external_parameters.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM