PM2不会在Docker内部启动

时间:2017-01-18 09:36:47

标签: node.js docker docker-compose pm2

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

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

我已经通过PM2's docker integration advice并使用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二进制文件找不到hello世界的任何好例子,我也不知道为什么pm2-docker拒绝工作,特别是因为它在官方pm2-docker-alpine图像上方运行。

1 个答案:

答案 0 :(得分:1)

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

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