【问题标题】:Deploy Laravel .env file based on environment基于环境部署 Laravel .env 文件
【发布时间】:2021-10-14 17:51:19
【问题描述】:

我正在为我的 Laravel 应用程序创建一个 CI/CD 管道,但我有点不理解 .env 环境文件。在 Laravel docs 中声明:

为了让这件事变得轻而易举,Laravel 使用了 DotEnv PHP 库。在一个 新鲜的 Laravel 安装,你的应用程序的根目录 将包含一个定义许多常见环境的 .env.example 文件 变量。在 Laravel 安装这里的安装过程是什么?)过程中,这个文件将 自动复制到 .env。

您的 .env 文件不应提交到应用程序的源代码 控制,因为每个使用您的应用程序的开发人员/服务器都可以 需要不同的环境配置

  • 在哪里存储这个.env,如果不在源repo中,则用于不同的环境,并使其自动复制到prod env?

  • 是否有任何命令可以根据提供的参数创建.env 文件,该命令可以作为生产部署的一部分执行并自动生成 .env 文件?

  • 我是否需要手动复制/粘贴生产 .env 文件或创建一些自定义 Bash 脚本,是否有任何 Laravel/artisan 特定的方法可以做到这一点?

  • 文档在安装过程中会复制示例env文件到env是什么意思,除了最初的过程之外还有其他过程吗?

【问题讨论】:

    标签: laravel continuous-delivery


    【解决方案1】:

    这是一个非常重大的决定,取决于您的基础架构和部署过程。秘密管理并不容易。我可以告诉你一种方法,回答你的问题。

    在哪里存储这个 .env

    1. 在您的项目中创建文件夹deployment。在此文件夹中创建文件夹 environments 和子文件夹 devstageprod
    2. 使用此文件夹中的变量创建 .env 文件
    3. 使用sops 加密此文件
    4. 将此文件推送到仓库
    5. 在部署过程中,解密文件,参考部署环境。

    有没有创建.env的命令

    如果您在数组中有参数 - 只需执行此操作 - 将从 env vars 中读取变量

    foreach ($params as $key => $value){
        putenv("$key=$value");
    }
    

    是否需要手动复制/粘贴生产环境.env

    不,你没有

    在安装过程中将示例 env 文件复制到 env 中的文档是什么意思

    意思是——示例环境将在第一次安装时被复制,查看 composer.json: “后根包安装”:[ "php -r "file_exists('.env') ||复制('.env.example', '.env');"" ],

    【讨论】:

    • 我使用带有密码的存档 winrar。
    猜你喜欢
    • 2015-05-12
    • 2016-02-17
    • 2019-05-22
    • 2020-11-16
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2021-03-13
    • 2015-03-18
    相关资源
    最近更新 更多