此处的Dockerfile用于创建映像image/name
,然后运行以创建容器,但docker ps
报告服务已退出。预计它将继续运行以便为网站提供服务但不会这样做。怎么修好?
//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
答案 0 :(得分:0)
看起来这是一个微不足道的错误。
根据main.js
的最后一行,/
目录下的Dockerfile
是可用的,即,{
CMD node ./main.js
但是,我相信main.js
位于/opt/bundle/programs/server/
目录下。
现在您可以选择运行main
应用程序。
只需更改docker run
并告知要调用的应用程序
docker run -tid -p 80:80 image/name node /opt/bundle/programs/server/main.js
与第一种情况相同。我们假设应用程序在侧面映像中不可用,并且可在主机/本地计算机中使用。因此,将本地目录挂载到容器并运行该应用程序。在这种情况下,当前目录中有一个应用程序app2.js
。
docker run -p 80:80 -v $(pwd):/share -itd image/name node /share/app2.js
CMD
中的绝对路径:删除现有图片。修改Dockerfile
并从
CMD node ./main.js
要
CMD node /opt/bundle/programs/server/main.js
现在重建图像。在这种情况下,您不必在运行容器时在命令中提及要运行的应用程序。与上面不同,如果您看到选项#1,#2,还会指定在运行容器时要调用的应用程序。相反,可以简单地运行图像,因为图像知道默认运行哪个应用程序。
docker run -tid -p 80:80 image/name
当docker容器完成/完成内部运行的进程时,会显示 Exited
状态。
main.js
无法找到正确的位置,流程立即完成,容器退出您的情况。
希望这有用。