首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头重新启动入口点

码头重新启动入口点
EN

Stack Overflow用户
提问于 2016-08-05 10:48:47
回答 3查看 12.4K关注 0票数 6

大约一个月前,我就开始使用docker了,现在无法找到一个令人满意的解决方案来解决以下情况。

我想部署一个NodeJS应用程序,因为使用ENTRYPOINT是一种最佳实践,所以我倾向于使用以下命令:ENTRYPOINT ["node", "src/start.js"]

但是,我还没有找到在容器中重新启动入口点进程的方法,这意味着每次我在nodejs应用程序中更改某些内容时,我都必须重新启动整个容器,这在具有共享卷的开发环境中有点烦人。

我想到的一个解决方案是为此使用流程管理器,并执行类似于ENTRYPOINT ["pm2", "src/start.js"]的操作,但对于单个流程使用流程管理器似乎是错误的。

我想要求一种方法,使我尽可能接近热交换,而不改变Dockerfile之间的“开发码头”和“生产码头”。

TL;DR:应该可以在我的开发机器上不安装NodeJS或应用程序所需的任何东西,但是可以从一个码头容器中运行所有东西,同时能够在所述容器中重新启动节点进程,而不必重新启动容器本身。更改Dockerfile对我来说不是一个选项,我想使用ENTRYPOINT

编辑

Dockerfile

代码语言:javascript
复制
FROM mhart/alpine-node:4.4.7

# add curl and bash
RUN apk add --update curl bash

#Add user
RUN addgroup websites && adduser -s /bin/bash -D -G websites user-api

#Copy app
WORKDIR /srv/app
ADD src ./src/
ADD node_modules ./node_modules

#Expose port
EXPOSE 3000

ENTRYPOINT ["node", "src/start.js"]

代码语言:javascript
复制
docker build -t app .

在我的工作站上运行容器

代码语言:javascript
复制
docker run -dit -p 53017:3000 --name app -v c:/Users/hesxenon/Projects/app:/srv/app app:latest
EN

回答 3

Stack Overflow用户

发布于 2016-12-16 15:10:10

对于这个pm2,有一个很好的npm模块。将其作为全局包安装在nodejs基础映像中。

ENTRYPOINT ["pm2-docker", "src/start.js"]启动应用程序

然后,您可以使用docker exec -ti <containerid> <shell>输入停靠程序映像,并使用pm2 stop 0停止应用程序,然后重新配置,然后使用pm2 start 0重新启动它。惠特杀死了容器,于是pid1就死了。

票数 2
EN

Stack Overflow用户

发布于 2016-12-16 17:53:52

我认为最好的选择是使用nodemon:https://www.npmjs.com/package/nodemon

它监视您指定的源目录,并在发生任何更改时重新启动。

另外,为了增加容器的启动时间,如果您复制了package.json,然后在容器上运行npm安装,它将使用缓存的包json,可能会将其缩短到一两秒钟,因为node_modules将是您要复制的最大文件夹:当docker生成Dockerfile时如何缓存运行npm安装指令

代码语言:javascript
复制
COPY package.json .
RUN npm install
COPY src ./src/
票数 1
EN

Stack Overflow用户

发布于 2016-08-06 22:48:24

docker stop 默认情况下需要10秒 -您可以使用-t arg来调整这一点,但是docker restart应该是几乎即时的,并且应该与重新启动节点相同。

我不太清楚您所说的底层"system“是什么意思,它不是一个VM,只要您不重新启动Docker主机,重新启动容器(如果设置正确的话)就不会比重新启动进程本身花费更长的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38787396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档