容器退出而不是在后台运行

这里的Dockerfile用于创build映像image/name ,然后运行以创build容器,但是docker ps report service已退出。 预计将继续运行,以便为网站服务,但不这样做。 如何解决?

 //Dockerfile FROM lambdalinux/baseimage-amzn:2016.09-000 RUN curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - RUN yum install -y tar nodejs COPY ./bundle /opt/bundle/ WORKDIR /opt/bundle/programs/server/ RUN npm install CMD node ./main.js 

在命令行docker run -tid -p 80:80 image/name

看起来这是微不足道的错误。

根据main.js最后一行,预计main.js/目录下是可用的,
CMD node ./main.js

不过,我相信, main.js可以在/opt/bundle/programs/server/目录下find。

现在,您可以select运行main应用程序。

1无修改图像:

只需更改docker run并告诉哪个应用程序被调用

 docker run -tid -p 80:80 image/name node /opt/bundle/programs/server/main.js 

2不修改映像:从主机到容器挂载本地目录:

和第一种情况一样。 让我们假设该应用程序在侧面图像中不可用,并在主机/本地机器中可用。 因此,将本地目录安装到容器并运行该应用程序。 在这种情况下,当前目录中有一个应用程序app2.js

 docker run -p 80:80 -v $(pwd):/share -itd image/name node /share/app2.js 

3修改图像,参考CMD绝对path:

删除现有的图像。 修改DockerfileDockerfile更改以下语句

 CMD node ./main.js 

 CMD node /opt/bundle/programs/server/main.js 

现在重build图像。 在这种情况下,您不必在运行容器的命令中提及要运行的应用程序。 与上面不同的是,如果您看到选项#1,#2,则还指定在运行容器时要调用哪个应用程序。 相反,可以简单地运行图像,因为图像知道默认运行哪个应用程序。

 docker run -tid -p 80:80 image/name 

docker容器完成/完成内部运行的进程时显示Exited状态。

main.js不能位于正确的位置,处理立即完成,容器退出你的情况。

希望这是有帮助的。