git – 在Laravel 5应用程序中应该将环境特定值保存在何处?

前端之家收集整理的这篇文章主要介绍了git – 在Laravel 5应用程序中应该将环境特定值保存在何处?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图围绕在Laravel 5中进行配置的.env方式.

这是我的故事:我正在将现有的Laravel 4应用程序转换为Laravel 5.我目前拥有不同的环境(本地和生产),并且级联配置系统运行良好.我在app / config下的单独文件夹中有我的环境特定应用程序配置.

我的应用程序目前在Docker容器中部署(和开发).为了构建部署,我使用Dockerfile来构建我的应用程序映像(基于我的主分支),然后将其推送到存储库并在生产服务器上提取.

所以现在我正在尝试将我的配置转换为Laravel 5,我有点困惑.我读到的所有内容都表示您将.env文件添加到.gitignore文件中,因此它不会包含在您的存储库中.我理解这样做的安全原因 – 不要将敏感的API密钥/密码/提交到您的存储库.但我不确定如果我的生成.env文件包含在我的构建步骤中,如果它不是存储库的一部分,我不知道如何确保.

我的想法是将我的生产.env文件放在我的开发环境之外的文件系统中,然后在需要时复制它.

这是管理这个的“最佳实践”吗?这是别人怎么做的?

谢谢!

.env文件将包含您将在配置文件中使用env(‘variable’)应用的变量.最佳实践是在配置文件中设置任何与环境无关的参数(意味着它将同时适用于生产和开发),并在.env文件中设置任何与环境相关的变量

示例:在您的开发和登台服务器上,您将使用gmail smtp发送电子邮件,但在生产服务器上,您将使用自己的smtp服务器.只需按如下方式设置电子邮件配置:

配置文件

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关于dev和staging

MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_FROM_EMAIL=email@gmail.com
MAIL_FROM_NAME=email@gmail.com
MAIL_USERNAME=email@gmail.com
MAIL_PASSWORD=password

.env关于生产

MAIL_HOST=smtp.domain.com
MAIL_PORT=587
MAIL_FROM_EMAIL=noreply@domain.com
MAIL_FROM_NAME=noreply@domain.com
MAIL_USERNAME=noreply@domain.com
MAIL_PASSWORD=password

永远不要在你的git repo上包含.env文件.而是制作副本并将其命名为“.env.sample”并添加它.因此,一旦克隆了repo,您​​的开发团队就可以设置自己的.env文件.您需要将.env添加到.gitignore以防止它添加到repo.

猜你在找的Docker相关文章