【发布时间】: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