尝试使用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
图像上方运行。
答案 0 :(得分:1)
要激活--watch选项,而不是将--watch选项传递给pm2-docker,只需在yml配置文件中将watch选项设置为true:
apps:
- script: './index.js'
name: 'server'
watch : true