每当在 Laravel AWS 管道中推送新版本时,我的环境都会被删除
Posted
技术标签:
【中文标题】每当在 Laravel AWS 管道中推送新版本时,我的环境都会被删除【英文标题】:My env gets deleted whenever new release is pushed in a Laravel AWS pipeline 【发布时间】:2021-08-14 02:40:42 【问题描述】:-
我在 AWS Elastic Beanstalk 上安装了一个 Laravel 项目
我在服务器上创建了一个环境
我运行
php artisan key:generate
命令并填充了我所有的环境变量
这工作正常,我的应用程序启动。但是后来我通过 CI 管道在我的服务器上推送了一些其他工作,但它会自动删除 env 文件。
另外请注意,我已经在 .gitignore 中添加了我的环境,所以它不会推送我的环境。
我认为这是因为 Elastic Beanstalk 会在发布新版本时自动删除旧文件并创建新文件。
以下是我的 composer.json 脚本部分:
"autoload":
"psr-4":
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
,
"autoload-dev":
"psr-4":
"Tests\\": "tests/"
,
"minimum-stability": "dev",
"prefer-stable": true,
"scripts":
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
【问题讨论】:
你在使用 Laravel 和composer
吗?您是否收到以下错误:RuntimeException No application encryption key has been specified.
?如果您正在使用 composer 密钥生成可能会通过post-create-project-cmd
或类似方式自动为您处理。 See here for more details
是的,此错误已显示,但由于 env 被删除,所以应用程序密钥自然也被删除。你能告诉我如何阻止 env 被删除吗?
你在使用composer
吗?如果是这样,您能否更新您的问题以包含您的composer.json
文件的scripts
部分的示例?它应该包括一个类似于此的条目:"post-create-project-cmd": ["php artisan key:generate"]
。 You can learn more about composer scripts here
是的,我在我的问题@dusthaines 中包含了我的作曲家文件脚本部分
【参考方案1】:
我发现我需要在每次发布新版本时创建环境,或者我可以在 AWS 提供的 ebextension config settings
中设置环境变量,所以我最终将环境变量设置为 ebextension 内的配置文件。
因此,每当您通过管道发送新版本时,该 env 被删除是正常的,因为它包含在 git ignore 中。
【讨论】:
以上是关于每当在 Laravel AWS 管道中推送新版本时,我的环境都会被删除的主要内容,如果未能解决你的问题,请参考以下文章