2015-04-21 14 views
8

Tôi đang cố gắng để quấn quanh đầu tôi những .env cách để thực hiện cấu hình trong Laravel 5.Các giá trị môi trường cụ thể nên được lưu trong ứng dụng Laravel 5 ở đâu?

Dưới đây là câu chuyện của tôi: Tôi đang chuyển đổi một ứng dụng hiện có Laravel 4 đến Laravel 5. Tôi hiện đang có môi trường khác nhau (localproduction) và hệ thống cấu hình xếp tầng hoạt động tốt. Tôi có cấu hình ứng dụng dành riêng cho môi trường của mình trong các thư mục riêng biệt theo số app/config.

Ứng dụng của tôi hiện được triển khai (và phát triển) trong vùng chứa Docker. Để xây dựng cho triển khai, tôi sử dụng một Dockerfile để xây dựng hình ảnh ứng dụng của tôi (dựa trên chi nhánh master của tôi), sau đó được đẩy tới một kho lưu trữ và được kéo lên máy chủ sản xuất.

Vì vậy, bây giờ tôi đang cố gắng chuyển đổi cấu hình của mình cho Laravel 5 và tôi hơi bối rối. Mọi thứ tôi đọc cho biết bạn thêm các tệp .env của mình vào tệp .gitignore để tệp không được đưa vào kho lưu trữ của bạn. Tôi hiểu lý do bảo mật cho điều này - không cam kết các khóa/mật khẩu API nhạy cảm/bất kỳ điều gì đối với kho lưu trữ của bạn. Nhưng tôi không chắc chắn làm thế nào để đảm bảo rằng sản xuất của tôi .env tập tin được bao gồm trong bước xây dựng của tôi nếu nó không phải là một phần của kho lưu trữ.

Ý tưởng tôi có là đặt sản phẩm .env vào một nơi nào đó trong hệ thống tệp của mình bên ngoài môi trường phát triển của mình và sau đó sao chép nó khi cần.

Đây có phải là "phương pháp hay nhất" để quản lý việc này không? Đây có phải là cách người khác làm điều đó không?

Cảm ơn!

+0

AFAIK bạn có nghĩa là sao chép trực tiếp tệp đó vào máy chủ. Tôi đã được SSHing vào máy chủ của tôi và cập nhật các tập tin env khi cần thiết để phản ánh những thay đổi/yêu cầu mới. –

+0

@JamesSpence Vâng, đó là những gì tôi nghĩ quá, nhưng bước xây dựng/triển khai của tôi hơi khác một chút - không dễ dàng hoặc thuận tiện để xây dựng hình ảnh Docker, triển khai nó, THEN ssh vào máy chủ, nhập vùng chứa Docker & sao chép tập tin. Đó là lý do tại sao tôi nghĩ rằng điều quan trọng là phải đề cập đến thực tế là tôi đang làm điều này với Docker. – Kryten

+0

Tôi chưa bao giờ sử dụng Docker trước đây, nhưng tôi cho rằng bạn có thể sao chép các tệp vào môi trường đó, phải không?Nó có thể không đơn giản như kéo repo vào và đi ngay phía trước, nhưng nó chỉ là một bước khác. Đó là những gì tôi phải làm để triển khai các tệp env của mình. –

Trả lời

2

.vv tệp sẽ chứa các biến mà bạn sẽ áp dụng bằng cách sử dụng env ('biến') trong tệp cấu hình. Thực hành tốt nhất sẽ được đặt bất kỳ tham số nào là môi trường độc lập (có nghĩa là sẽ hoạt động trên cả sản xuất và phát triển) ngay trong tệp cấu hình và đặt bất kỳ biến phụ thuộc môi trường nào trong tệp .env

Ví dụ: trên dev và dàn dựng của bạn máy chủ bạn sẽ gửi email bằng cách sử dụng gmail smtp nhưng trên máy chủ sản xuất bạn sẽ sử dụng máy chủ smtp của riêng bạn. Đơn giản chỉ cần thiết lập cấu hình email như sau:

cấu hình file:

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 trên dev và dàn dựng

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

.env về sản xuất

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

không bao giờ bao gồm. env tập tin trên repo git của bạn. Thay vào đó hãy tạo một bản sao và đặt tên là ".env.sample" và thêm vào đó. Vì vậy, nhóm dev của bạn có thể thiết lập tệp .env của riêng họ khi repo được nhân bản. Bạn sẽ cần phải thêm .env vào .gitignore để ngăn không cho nó thêm vào repo.

Các vấn đề liên quan