Bonjour,

Je suis un peu débutant sur symfony et je me demandais comment il étais possible de faire une configuration BDD en environnement prod et dev dans le sens où l'environnement dev serais la bdd en local sur mon ordinateur et l'environnement prod serais la configuration bdd du serveur sur lequel est hébergé le site web.

Tout ceci me permettrais de pouvoir mettre en ligne sans me soucier de l'écrasement de la configuration à chaque fois des parametres de la bdd.
Merci d'avance pour l'aide :)

4 réponses


Salut,
Si tu utilises la version 2 tu peux regarder cette doc tu peux simple ne pas versionner ce fichier et en avoir un différent sur ton local et un autre sur ta prod. Si tu utilises la version 3, tu as cette doc la. Là pareil tu version pas le fichier .env et tu as un différent entre la prod et ton local.
Après il y a d'autres méthodes, mais déjà celle-là est assez propre.

Bonjour Manuel,
Pour moi la solution optimale serait de versionner ton projet (git), Symfony étant bien prévu pour cela. Ensuite une branche dev pour les devs et une branche master pour la prod... Avec deux DB distinctes.
Encore mieux, installer un gitlab CI pour faire de l'intégration continue.
Après il faut disposer d'un serveur distant avec Git ou un serveur dédié...

Oui mais comment je répercute les changements de la version dev dans la version prod ? car si je fais comme ça je vais écraser la BDD de la version prod. Je suis assez débutant sur Git GitLab etc, donc l'intégration continue je vois à peut près ce que c'est mais le mettre en place pour le moment c'est : "????" ^^' Je voudrais bien un peu d'aide sur le sujet pour améliorer mes connaissances à ce sujet.

moi ce que je fait, c'est avec nginx, j'envoi un parametre a mon application. un APPLICATION_ENVIRONMENT=DEV ou PROD en fonction de mon pc ou du serveur.

et dans le fichier config/database.php j'ai déclaré 2 bdd differentes et je switch de bdd en fonciton de l'environment avec un petit switch case

public $dev = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'xxx',
        'port' => '3307',
        'login' => 'xxx',
        'password' => 'xxx',
        'database' => 'xxx',
        'prefix' => '',
        'encoding' => 'utf8',
    );
public $prod = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'yyy',
        'port' => '3307',
        'login' => 'yyy',
        'password' => 'yyy',
        'database' => 'yyy',
        'prefix' => '',
        'encoding' => 'utf8',
    );
//Configuration en fonction de l'environement
        if (isset($_SERVER) && isset($_SERVER['APPLICATION_ENVIRONMENT'])) {
            switch ($_SERVER['APPLICATION_ENVIRONMENT']) {
                case 'DEV':
                    $this->default = $this->dev;
                    break
                case 'PROD':
                    $this->default = $this->prod;
                    break;
            }