我有一个示例node.js应用程序,它只适用于sqlite 我想做一个概念验证'在AWS ElasticBeanstalk上,无需重写node.js应用程序以使用受支持的数据库
为了启动node.js应用程序,我必须首先通过执行node db.js
为sqlite数据库播种。
如何在EBS实例上执行此节点命令?
我尝试过添加命令到.ebextensions
.ebextensions / foo.config
commands:
1_seed_db:
command: "PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin node db.js"
返回错误:
错误:找不到模块' /var/app/current/db.js;'
我怀疑/ var / app / current目录还没有存在,所以我也尝试修改NodeCommand,以便执行自定义命令node db.js; npm start
as documented here:
.ebextensions / node.config
option_settings:
- namespace: aws:elasticbeanstalk:container:nodejs
option_name: NodeCommand
value: node db.js; npm start
如何在启动节点进程之前使Elastic beanstalk执行node db.js
?
答案 0 :(得分:0)
我能够通过欺骗packages.json
中的start命令来实现这一点packages.json之前:
"scripts": {
"start": "node ./db.js; node ./bin/www"
},
packages.json之后:
import org.apache.spark.sql.functions.typedLit
val df = Seq((1L, null), (2L, Map("foo" -> "bar"))).toDF("id", "map")
df.withColumn("map", coalesce($"map", typedLit(Map[String, Int]()))).show
// +---+-----------------+
// | id| map|
// +---+-----------------+
// | 1| Map()|
// | 2|Map(foobar -> 42)|
// +---+-----------------+
你显然不应该在制作中这样做,但它足以证明概念。