2015-04-21 15 views
8

Sto cercando di avvolgere la mia testa intorno al .env modo di fare di configurazione in laravel 5.Dove devono essere salvati i valori specifici dell'ambiente in un'applicazione Laravel 5?

Qui è la mia storia: Sto convertire un'applicazione laravel 4 esistente a laravel 5. Al momento ho diversi ambienti (local e production) e il sistema di configurazione a cascata funziona bene. Ho la mia configurazione dell'applicazione specifica per l'ambiente in cartelle separate sotto app/config.

La mia applicazione è attualmente distribuita (e sviluppata) in un contenitore Docker. Per costruire per la distribuzione, utilizzo un Dockerfile per creare l'immagine dell'applicazione (basata sul mio ramo master), che viene quindi trasferito su un repository e attivato sul server di produzione.

Così ora sto provando a convertire la mia configurazione per Laravel 5 e sono un po 'confuso. Tutto quello che ho letto dice che aggiungi i tuoi file .env al file .gitignore in modo che non sia incluso nel tuo repository. Capisco i motivi di sicurezza per questo - non commettere chiavi API/password sensibili/qualunque sia il tuo repository. Ma non sono sicuro di come assicurare che il mio file di produzione .env sia incluso nel mio passaggio di build se non fa parte del repository.

L'idea che avevo era di collocare il mio file di produzione .env da qualche parte nel mio file system al di fuori del mio ambiente di sviluppo, e quindi copiarlo quando è necessario.

È questa la "migliore pratica" per gestirlo? È così che gli altri lo fanno?

Grazie!

+0

AFAIK si intende copiare direttamente il file sul server. Ho eseguito SSHing nel mio server e aggiornato il file ENV secondo necessità per riflettere le nuove modifiche/requisiti. –

+0

@JamesSpence Sì, è quello che ho pensato anch'io, ma il mio passo di build/deploy è un po 'diverso - non è facile o comodo costruire l'immagine Docker, distribuirla, POI ssh nel server, inserire il contenitore Docker e copiare un file. Ecco perché ho pensato che fosse importante menzionare il fatto che sto facendo questo con Docker. – Kryten

+0

Non ho mai usato Docker prima, ma presumo che tu possa copiare i file in quell'ambiente, giusto?Potrebbe non essere semplice come tirare il repository e andare avanti, ma è solo un altro passo. È quello che devo fare per distribuire i miei file ENV. –

risposta

2

Il file .env conterrà le variabili che verranno applicate utilizzando env ('variabile') nei file di configurazione. Si consiglia di impostare qualsiasi parametro indipendente dall'ambiente (ovvero che funzioni sia sulla produzione che sullo sviluppo) direttamente nei file di configurazione e impostare qualsiasi variabile dipendente dall'ambiente nel file .env

Esempio: sul proprio dev e sulla messa in scena server invierai email usando smmail gmail ma sul server di produzione userai il tuo server smtp. È sufficiente impostare la configurazione e-mail come segue:

file di configurazione:

return [ 
    'driver' => 'smtp', 
    'host' => env('MAIL_HOST'), 
    'port' => env('MAIL_PORT'), 
    'from' => ['address' => env('MAIL_FROM_EMAIL'), 'name' => env('MAIL_FROM_NAME')], 
    'encryption' => 'tls', 
    'username' => env('MAIL_USERNAME'), 
    'password' => env('MAIL_PASSWORD'), 
    'sendmail' => '/usr/sbin/sendmail -bs', 
    'pretend' => false 
]; 

.env il dev e messa in scena

MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
[email protected] 
[email protected] 
[email protected] 
MAIL_PASSWORD=password 

.env sulla produzione

MAIL_HOST=smtp.domain.com 
MAIL_PORT=587 
[email protected] 
[email protected] 
[email protected] 
MAIL_PASSWORD=password 

mai includere il. file env sul tuo repository git. Invece fai una copia e chiamala ".env.sample" e aggiungila. Quindi il tuo team di sviluppo può impostare il proprio file .env una volta che il repository è clonato. Dovrai aggiungere .env al file .gitignore per impedirne l'aggiunta al repository.

Problemi correlati