如何运行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以获取更多参考