如何运行sequelize db:使用env vars在Elastic Beanstalk EB上迁移? 如何在容器命令中访问.env vars?
如何运行sequelize db:使用env vars在ElasticBean上迁移?
运行sequelize迁移失败,因为它无法find.env
文件。
{ Error: ENOENT: no such file or directory, open '.env'
我的master.config如下所示:
container_commands: 00_node_binary: command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node" 00_npm_binary: command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm" 01_migrations: command: npm run migrate leader_only: true
和我的package.json包含
"migrate": "node_modules/sequelize-cli/bin/sequelize db:migrate"
编辑:
我刚刚发现了什么是环境variables。 尝试运行没有npm
的迁移脚本。 它会是这样的:
./node_modules/.bin/sequelize db:migrate
这样,你会得到所有的环境variables,如你所期望的。
老答案:
你确定你的.env
文件被提交到你的git .env
吗? 一般来说,将.env
提交到git并将其用于生产并不是一个好主意。 您应该在“ Software Configuration
下的Elastic Beanstalk仪表板中设置环境variables。
您也可以使用eb
命令行实用程序,如此处所述 。
不要忘记包含前两个命令,在.ebextensions中为我工作的文件migration.config看起来像这样
container_commands: 00_node_binary: command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node" 00_npm_binary: command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm" 50-run-database-migrations: command: "./node_modules/.bin/sequelize db:migrate" leader_only: true
它看起来像./node_modules/.bin/sequelize使用/ usr / bin / env /节点,并会给你以下错误:
/usr/bin/env: node: No such file or directory
因为显然节点被称为nodejs …前两个容器命令将照顾到这一点。
请参阅https://github.com/nodejs/node-v0.x-archive/issues/3911以获取更多参考
- 无法在AWS Lambdas中使用任何第三方模块
- 外部调用的Lambda函数超时
- AWS Lambda环境variables未设置,process.env在节点中未定义
- AWS-SNS和Node.js:将多个端点(ARN)订阅到主题
- 开发亚马逊Alexa的技能,我有插槽值(首字母缩略词)阅读为单词的麻烦
- ValidationException:ExpressionAttributeValues不能为空
- Amazon Web Services:从Lambda函数删除DynamoDB数据库上的项目
- Nodemailer不在Amazon EC2实例上工作
- 如何将node.js日志从Elastic Beanstalk Docker应用程序发送到Cloudwatch Logs?