gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:18:50 25 4
gpt4 key购买 nike

此处的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

最佳答案

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

根据main.js的最后一行,预计/Dockerfile目录下可用,即,CMD node ./main.js
但是,我相信main.js/opt/bundle/programs/server/目录下可用。

现在,您可以选择运行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中引用绝对路径:

删除现有的图像。修改 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找不到正确的位置,此过程立即完成,您的情况下退出了容器。

希望这会有所帮助。

关于meteor - 容器退出而不是在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com