2014-11-04 29 views
0

我已经建立了一个泊坞窗容器(Node.js的一些项目文件一起安装)与下列Dockerfile:无法启动的Node.js应用程序中内置泊坞集装箱

RUN yum install -y openssl wget unzip gcc gcc-c++ tar make automake git 
RUN curl -L https://www.opscode.com/chef/install.sh | bash 

[... Chef Related Stuff ...] 

#Docker CMD 
WORKDIR /var/node 
CMD ["/usr/bin/node /var/node/lib/app.js"] 

它建立的容器设计在正在使用泊坞窗的本地机器上使用共享目录。当我尝试推出内置容器(即包含CMD ["/usr/bin/node /var/node/lib/app.js"]部分的)我发现容器无法启动:

US-C02NC26AG3QN:docker user$ docker run -d -v /Users/user/Documents/test_area/docker/nodejs:/var/node front/nodejs 
db07b901e83fb45f19d00151129ce42b836cf2379d91cebea54de8b51add614b 
2014/11/04 10:42:56 Error response from daemon: Cannot start container db07b901e83fb45f19d00151129ce42b836cf2379d91cebea54de8b51add614b: exec: "/usr/bin/node /var/node/lib/app.js": stat /usr/bin/node /var/node/lib/app.js: no such file or directory 

但是,如果我忽略从Dockerfile中的CMD ["/usr/bin/node /var/node/lib/app.js"]部分,重建图像,并以其工作正常的典型方式启动容器:

US-C02NC26AG3QN:docker user$ docker run -d -v /Users/user/Documents/test_area/docker/nodejs:/var/node front/nodejs /usr/bin/node /var/node/lib/app.js 
ab83f476bde812f179c461eacb954fc59da4bcc9e22f5b14fd71d257cd7ade40 
US-C02NC26AG3QN:docker user$ docker ps 
CONTAINER ID  IMAGE     COMMAND    CREATED    STATUS    PORTS    NAMES 
ab83f476bde8  front/nodejs:latest "/usr/bin/node /var/ 4 days ago   Up 3 seconds       clever_lovelace 
US-C02NC26AG3QN:docker user$ docker top ab83f476bde8 
PID     USER    COMMAND 
19815    root    /usr/bin/node /var/node/lib/app.js 

这里发生了什么?当启动命令包含在内部版本中时,为什么它无法精细化目录,但是在启动容器时显式使用启动命令时能够找到目录?

回答

0

CMD括号表示您将所有参数作为列表提供。所以,你需要做的

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

您也可以使用bash运行它

CMD node app.js 
+0

虽然它不能解决问题,这可能是真实的 – localhostv6 2014-11-04 19:15:41

相关问题