小编HES*_*non的帖子

Docker 重启入口点

我大约一个月前开始使用 docker,但找不到令人满意的解决方案来解决以下情况。

我想部署一个 NodeJS 应用程序,因为使用ENTRYPOINT是最佳实践,所以我更喜欢使用这个命令: ENTRYPOINT ["node", "src/start.js"].

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

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

我想寻求一种方法,让我尽可能接近热插拔,而无需在“开发 Docker”和“生产 Docker”之间更改 Dockerfile。

TL;DR:应该可以在我的开发机器上不安装 NodeJS 或应用程序需要的任何东西,但可以在 docker 容器中运行所有内容,同时能够在所述容器中重新启动节点进程,而无需重新启动容器本身。更改 Dockerfile 不是我的选择,我想使用ENTRYPOINT.

编辑
Dockerfile

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"]
Run Code Online (Sandbox Code Playgroud)

构建图像 …

process-management node.js docker

6
推荐指数
1
解决办法
9833
查看次数

标签 统计

docker ×1

node.js ×1

process-management ×1