每次在Laravel AWS管道中推送新版本时,我的环境都会被删除。
每次在Laravel AWS管道中推送新版本时,我的环境都会被删除。
我在AWS Elastic Beanstalk上安装了一个Laravel项目。
我在服务器上创建了一个env文件。
我运行了"php artisan key:generate"命令,并填写了所有的env变量。
这个工作正常,我的应用程序也启动了。但是当我通过CI流水线将其他工作推送到服务器时,它会自动删除env文件。
还要注意的是,我已经在.gitignore中添加了我的env文件,所以它不会被推送。
我认为这是因为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 AWS pipeline中,每次推送新的发布版本时,环境变量(env)都会被删除,这是因为env文件被设置为git ignore,所以每次推送新的版本时都会被忽略。
解决方法是要么在每次发布新版本时手动创建env文件,要么在AWS提供的ebextension配置设置
中设置环境变量。作者选择了在ebextension内部的配置文件中设置环境变量。
在ebextension配置文件中设置环境变量可以确保每次新版本发布时都能自动设置环境变量,避免了手动创建env文件的麻烦。
总之,解决这个问题的方法是在Laravel AWS pipeline中设置环境变量的配置文件,从而确保每次新版本发布时都能正确地设置环境变量,避免了env文件被删除的问题。