【问题标题】:Is it possible to reference Bitbucket repository variable inside .env file of Laravel?是否可以在 Laravel 的 .env 文件中引用 Bitbucket 存储库变量?
【发布时间】:2020-09-24 15:26:54
【问题描述】:

我正在尝试实施 bitbucket-pipelines 以在 AWS 上进行持续部署。我想要实现的是在 Laravel 的 .env.example 文件中创建最终从 Bitbucket 存储库变量中提取的变量。

基本上,我想在 .env.example 中定义变量,如下所示:

DB_USERNAME="${DB_USERNAME}"
DB_PASSWORD="${DB_PASSWORD}"

然后,我还使用相同的键名(例如DB_USERNAME)在 Bitbucket 的存储库变量中定义它们,然后在运行 bitbucket-pipelines.yml 时,我将 .env.example 复制到 .env 就像这样 @ 987654323@

我期望它做的基本上是用我在 Bitbucket 存储库变量中定义的值替换 DB_USERNAME,但这不会发生。相反,如果我在部署后查看 .env 文件,DB_USERNAME 的值是 ${DB_USERNAME}

知道这是否真的可行吗?也许我做得不对?谢谢。

【问题讨论】:

  • 每个环境都指定了应用程序运行所需的变量。这就是为什么它们被称为环境变量。因此,在 Bitbucket 中,您将定义在 Bitbucket Pipelines 中运行您的应用程序所需的变量值,然后 AWS 将拥有在 AWS 上运行您的应用程序的环境变量值,等等。
  • 感谢您的评论。虽然,我理解这个过程,但我不明白为什么我的做法不起作用。所以如果你有什么建议,请告诉我。
  • 因为您没有将环境变量拉入 .env 文件。 .env 文件适用于环境变量不可用或无法轻松更新的情况,即在本地运行。只需让您的 Laravel 应用从环境中读取值即可。
  • 我认为你不明白我想要达到的目标。我正在尝试使用 Docker 在 AWS 上自动部署我的项目。这意味着在构建图像时,我希望在其中包含所有这些环境变量,以便可以将图像保存为 ECR 中的二进制文件。因此,如果我需要在几秒钟内启动另一个相同的容器,我想这样做而无需手动添加 .env 变量。希望能澄清事情。
  • 我最终要做的是使用我在 bitbucket-pipelines.yml 中运行的 sh 脚本即时创建 .env 文件,因为它此时可以访问 bitbucket 部署变量。

标签: laravel amazon-web-services environment-variables bitbucket-pipelines


【解决方案1】:

我解决这个问题的方法是创建一个 build.sh 文件,该文件将在 bitbucket-pipelines.yml 中调用,如下所示:

pipelines:
  branches:
    development:
      - step:
          deployment: development
          script:
            - chmod +x ./build.sh
            - ./build.sh

这基本上会从 Bitbucket 部署中提取环境变量,并在构建时将它们添加到 .env 中,如下所示:

cat >>src/.env <<EOF
  DB_DATABASE="${DB_DATABASE}"
  DB_USERNAME="${DB_USERNAME}"
  DB_PASSWORD="${DB_PASSWORD}"
EOF

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多