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