使用代码管道在aws elastic beanstalk上部署laravel应用程序,并使用rds使用laravel应用程序进行代码构建

使用代码管道在aws elastic beanstalk上部署laravel应用程序,并使用rds使用laravel应用程序进行代码构建,laravel,amazon-web-services,amazon-elastic-beanstalk,amazon-rds,Laravel,Amazon Web Services,Amazon Elastic Beanstalk,Amazon Rds,因此,我尝试将我的laravel应用程序(v7)部署到was elastic beanstalk。我看过指导上载包含.env文件的zip文件并更新config.database以使用全局RDS_*环境变量的教程 这对我不起作用,因为我想使用codepipline和codebuild用git钩子构建我的应用程序。我已经尝试过设置,但是我的代码构建没有成功,因为我在pubsec.yaml文件中添加了常用的laravel设置命令,如安装依赖项和迁移应用程序的数据库 迁移数据库是我遇到问题的地方。不知何

因此,我尝试将我的laravel应用程序(v7)部署到was elastic beanstalk。我看过指导上载包含.env文件的zip文件并更新config.database以使用全局RDS_*环境变量的教程

这对我不起作用,因为我想使用codepipline和codebuild用git钩子构建我的应用程序。我已经尝试过设置,但是我的代码构建没有成功,因为我在pubsec.yaml文件中添加了常用的laravel设置命令,如安装依赖项和迁移应用程序的数据库

迁移数据库是我遇到问题的地方。不知何故,codebuild似乎没有为我的应用程序数据库获取RDS_*变量。我被困在这里有一段时间了

这让我质疑codebuild如何处理环境变量。它如何创建用于部署的.env文件?我甚至添加了一个Linux命令来将我的.env.example复制到一个新的.env文件中,但存在同样的问题

任何帮助都将不胜感激。谢谢

日志上的错误:

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = forge and table_name = migrations and table_type = 'BASE TABLE') ``` SQLSTATE[HY000][2002]连接被拒绝(SQL:select*from) 信息\u schema.tables,其中table\u schema=forge和table\u name=migrations 和表_type='BASE table')```
Codebuild在与elastic beanstalk不同的环境中运行,因此无法在运行AWS Codebuild的容器中访问在elastic beanstalk中创建的环境变量

代码构建实际上是构建应用程序并将其传输到s3存储桶,以便在部署期间可以访问应用程序并将其移动到VPC,在我的例子中,VPC是由elastic beanstalk管理的ec2实例

部署后(即应用程序移动到vpc),应用程序可以访问EB环境变量

因此,如果您想要运行需要访问EB环境变量的命令,那么在代码构建中使用命令是错误的。您应该使用EB扩展。你可以读到他们


对于我的Laravel应用程序,我在应用程序根目录的.ebextentions目录中添加了一个init.config文件,然后将迁移命令作为容器命令添加。这适用于我的用例。

你能澄清一下你的意思吗?CodeDeploy无法部署到ElasticBeanstalk。对EB的Depoyment由CodePipeline本身使用
AWS Elastic Beanstalk
Deploy
操作提供程序处理。my pipeline的codedeploy构建步骤失败,因为codedeploy在其容器中构建的应用程序似乎没有访问RDS_*数据库的权限。env变量使我的数据库迁移失败失败。你是说代码构建吗?抱歉,我不明白CodeDeploy在您的代码管道中扮演什么角色。是的codebuild。。。我编辑了我的问题以反映这一点。谢谢你抓到它那么你的
buildspec.yml
文件是什么?CodeBuild只执行您在
buildspec.yml
文件中指定的操作。