PM2不会在Docker内部启动

尝试使用docker-compose从Docker中的卷中运行并重新加载节点应用程序。

目标是使应用程序在容器内运行,而不会丢失在容器外编辑/重新加载代码的能力。

我已经通过了PM2的docker集成build议,并使用keymetrics/pm2-docker-alpine:latest的基础图像。

docker-compose.yml文件定义了一个简单的Web服务。

 version: '2' services: web: build: . ports: - "${HOST_PORT}:${APP_PORT}" volumes: - .:/code 

其中使用了一个相当简单的Dockerfile。

 FROM keymetrics/pm2-docker-alpine:latest ADD . /code WORKDIR /code RUN npm install CMD ["npm", "start"] 

哪个调用npm start

 { "start": "pm2-docker process.yml --watch" } 

其中指的是process.yml

 apps: - script: './index.js' name: 'server' 

在本地运行npm start可以很好地工作 – PM2会运行节点进程并监视代码的变化。

但是,只要我试着在容器中运行它,我就会在启动时出现以下错误:

 Attaching to app_web_1 web_1 | web_1 | web_1 | [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 web_1 | [PM2] PM2 Successfully daemonized web_1 | web_1 | error: missing required argument `file|json|stdin|app_name|pm_id' web_1 | app_web_1 exited with code 1 

用pm2-docker二进制代码找不到一个好的例子,我不知道为什么pm2-docker会拒绝工作,特别是当它在正式的pm2-docker-alpine映像上运行时。

要激活–watch选项,而不是将–watch选项传递给pm2-docker,只需在ymlconfiguration文件中将watch选项设置为true:

 apps: - script: './index.js' name: 'server' watch : true