2017-11-27 3 views
0

Ich habe eine Symfony-App auf Heroku mit ClearDb-Addons. Ich muss die App für Test und Prod verwalten. Also brauche ich zwei Datenbanken: eine für Test und eine für die Produktion (Prinzip);Symfony-App verwalten Heroku

Ich versuchte die Heroku-Pipeline, aber wenn ich die App von staging bis production fördern, wird die Produktions-App mit Staging-DB verbunden. Wie kann gelöst werden? Wie Sie es schaffen?

BEARBEITEN Ich entdeckte den Fehler. Ich habe die Parameter über

$db = parse_url(getenv('CLEARDB_DATABASE_URL')); 
$container->setParameter('database_host', $db['host']); 

Von einer schnellen Suche nach $ Container-> setParameter Ich kann sehen, dass dies eine Symfony-Funktion Werte in dem Code einfügen, jedoch erwähnen sie die folgende Warnung in ihren docs:

HINWEIS: Sie können einen Parameter nur festlegen, bevor der Container kompiliert wird: nicht zur Laufzeit. Weitere Informationen zum Kompilieren des Containers finden Sie unter Kompilieren des Containers. https://symfony.com/doc/current/service_container/parameters.html#getting-and-setting-container-parameters-in-php

Heroku behandeln nur Symfony-Anwendungen in prod env. Also hat die Bühnen-App auch die Umgebung var als "prod". Wie kann ich Parameter für verschiedene Umgebungen einstellen? Oder dynamisch?

Danke, AlterB

Antwort

0

ich mit den Umgebungsvariablen gelöst haben.

wechselte ich in app/config/config.yml dieser:

doctrine: 
    dbal: 
     driver: pdo_mysql 
     host: '%database_host%' 
     port: '%database_port%' 
     dbname: '%database_name%' 
     user: '%database_user%' 
     password: '%database_password%' 

mit diesem

doctrine: 
    dbal: 
     driver: pdo_mysql 
     url: '%env(CLEARDB_DATABASE_URL)%' 

Die App DB-Verbindung direkt von Heroku Env bekommt. Und es ist fertig!