[英]AdonisJS app deployment on AWS ElasticBeanstalk using AWS CodePipeline fails - missing .env
我最近开始使用AdonisJS进行 API 开发。 我将AWS Elastic Beanstalk与AWS CodeCommit和AWS CodePipeline一起使用,在每个git push
上部署新代码。 由于 .env 文件不存在于 git 存储库中,我已通过Elastic Beanstalk Web 控制台添加了 env 变量。 但是当我尝试运行node ace migration:run
命令时部署失败。
Activity execution failed, because:
Error: ENOENT: no such file or directory, open '/tmp/deployment/application/.env'
1 Env.load
/tmp/deployment/application/node_modules/@adonisjs/framework/src/Env/index.js:110
2 new Env
/tmp/deployment/application/node_modules/@adonisjs/framework/src/Env/index.js:42
3 Object.app.singleton [as closure]
/tmp/deployment/application/node_modules/@adonisjs/framework/providers/AppProvider.js:29
4 Ioc._resolveBinding
/tmp/deployment/application/node_modules/@adonisjs/fold/src/Ioc/index.js:231
5 Ioc.use
/tmp/deployment/application/node_modules/@adonisjs/fold/src/Ioc/index.js:731
6 AppProvider.boot
/tmp/deployment/application/node_modules/@adonisjs/framework/providers/AppProvider.js:337
7 _.filter.map
/tmp/deployment/application/node_modules/@adonisjs/fold/src/Registrar/index.js:147
8 arrayMap
/tmp/deployment/application/node_modules/lodash/lodash.js:639
(ElasticBeanstalk::ExternalInvocationError)
然后我尝试在每个命令之前添加ENV_SILENT=true
标志,如 AdonisJS 文档中所述。 但这并没有帮助。
那么,我尝试在 S3 存储桶上上传 .env 文件,并在部署期间复制其内容。 但它似乎不起作用,因为我遇到了同样的错误(没有 .env 文件)。
这些是我来自 .ebextensions 文件夹的 2 个配置文件
01_copy_env.config (为了安全,我在这里使用 x-xxxxxxxxxxxx)
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-east-x-xxxxxxxxxxxx"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/deployment/application/.env":
mode: "000755"
owner: root
group: root
authentication: "S3Auth"
source: https://elasticbeanstalk-us-east-x-xxxxxxxxxxxx.s3.us-east-2.amazonaws.com/variables.txt
02_init.config
container_commands:
01_node_binary:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-v10* | head -1`/bin/node /bin/node"
leader_only: true
02_migration:
command: "node ace migration:run"
03_init_seed:
command: "node ace seed"
只有当我将 .env 文件添加到 git 并将其与其余代码一起部署时,整个事情才起作用。 但这不是要走的路,所以如果有人知道我的问题的解决方案,我将不胜感激。 谢谢!
在全局变量上添加新变量ENV_SILENT = true
(Elastic Beanstalk)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.