使用node.js应用程序启动Docker容器会产生错误; 抱怨PATH

我一直在头撞墙,需要一点帮助。

我有一个从Dockerfile构build的docker容器。 当我尝试运行该容器(交互式[-i]或detached [-d])时,它会产生以下错误:

2014/06/04 21:17:40 exec:“node”:在$ PATH中找不到可执行文件

这是我试图启动容器(由于安全原因通用):

sudo docker run -i -t -p port:port containername:containerversion node /path/to/node/app/nodeapp.js

什么是麻烦和令人困惑的是,当我运行没有附加命令的容器时,我能够进入目录/path/到/节点/应用程序,并运行:

节点nodeapp.js

这对我来说很好。 另外,当我比较“哪个节点”命令和“echo $ PATH”输出的内容时,我发现一切都是洁净的。 那么,为什么这个人会拒绝承认我是他的主人呢,我应该怎么做呢?

nodejs应该是工作。

我不知道为什么,但在我的情况下,它安装了名为nodejs不是node

在你的Dockerfile中,确保你的WORKDIR被设置, CMD指令看起来像下面的一样:

CMD ["npm", "start"]

CMD ["node", "nodeapp.js"]

尝试像这样运行它:

 sudo docker run -i -t -p port:port containername:containerversion /path/to/node/bin/node /path/to/node/app/nodeapp.js 

它必须是可能的添加到你的道路,但我不知道如何。 但是,即使可以,使用上面的完整path仍然是有意义的,因为您不会意外地以这种方式运行不同的node