在 docker 容器内重新加载代码。 PM2.5节点
Reload code inside docker container. PM2. Node js
我尝试在 docker 容器中重新加载我的节点 js 应用程序代码。我使用 pm2 作为进程管理器。这是我的配置:
Dockerfile
FROM node:6.9.5
LABEL maintainer "denis.ostapenko2@gmail.com"
RUN mkdir -p /usr/src/koa2-app
COPY . /usr/src/koa2-app
WORKDIR /usr/src/koa2-app
RUN npm i -g pm2
RUN npm install
EXPOSE 9000
CMD [ "npm", "run", "production"]
ecosystem.prod.config.json(又名 pm2 配置)
{
"apps" : [
{
"name" : "koa2-fp",
"script" : "./bin/www.js",
"watch" : true,
"merge_logs" : true,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"env": {
"NODE_ENV": "production",
"PROTOCOL": "http",
"APP_PORT": 3000
},
"instances": 4,
"exec_mode" : "cluster_mode",
"autorestart": true
}
]
}
docker-compose.yaml
version: "3"
services:
web:
build: .
volumes:
- ./:/koa2-app
ports:
- "3000:3000"
npm 运行 生产 -
pm2 开始 --attach ecosystem.prod.config.json
我在 CLI 中 运行 'docker-compose up' 并且它有效,我能够在 localhost:3000 上与我的应用程序交互。但是,如果对代码进行一些更改,它将不会显示在 web 中。如何在 docker 中配置代码重新加载?
P.S。最佳实践问题:使用 docker 东西开发真的可以吗?或者 docker 容器最适合生产使用。
看来你COPY
你的代码在一个地方,卷在另一个地方。
尝试:
version: "3"
services:
web:
build: .
volumes:
- ./:/usr/src/koa2-app
ports:
- "3000:3000"
然后,当您更改容器外的 js 代码(您的 IDE),现在 PM2 能够看到更改,因此重新加载应用程序(您需要确定那部分)。
关于在开发环境中使用Docker:这是一个非常好的事情,原因有很多。例如,您为不同的环境管理相同的应用程序安装,减少了很多错误等。
我尝试在 docker 容器中重新加载我的节点 js 应用程序代码。我使用 pm2 作为进程管理器。这是我的配置: Dockerfile
FROM node:6.9.5
LABEL maintainer "denis.ostapenko2@gmail.com"
RUN mkdir -p /usr/src/koa2-app
COPY . /usr/src/koa2-app
WORKDIR /usr/src/koa2-app
RUN npm i -g pm2
RUN npm install
EXPOSE 9000
CMD [ "npm", "run", "production"]
ecosystem.prod.config.json(又名 pm2 配置)
{
"apps" : [
{
"name" : "koa2-fp",
"script" : "./bin/www.js",
"watch" : true,
"merge_logs" : true,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"env": {
"NODE_ENV": "production",
"PROTOCOL": "http",
"APP_PORT": 3000
},
"instances": 4,
"exec_mode" : "cluster_mode",
"autorestart": true
}
]
}
docker-compose.yaml
version: "3"
services:
web:
build: .
volumes:
- ./:/koa2-app
ports:
- "3000:3000"
npm 运行 生产 - pm2 开始 --attach ecosystem.prod.config.json
我在 CLI 中 运行 'docker-compose up' 并且它有效,我能够在 localhost:3000 上与我的应用程序交互。但是,如果对代码进行一些更改,它将不会显示在 web 中。如何在 docker 中配置代码重新加载?
P.S。最佳实践问题:使用 docker 东西开发真的可以吗?或者 docker 容器最适合生产使用。
看来你COPY
你的代码在一个地方,卷在另一个地方。
尝试:
version: "3"
services:
web:
build: .
volumes:
- ./:/usr/src/koa2-app
ports:
- "3000:3000"
然后,当您更改容器外的 js 代码(您的 IDE),现在 PM2 能够看到更改,因此重新加载应用程序(您需要确定那部分)。
关于在开发环境中使用Docker:这是一个非常好的事情,原因有很多。例如,您为不同的环境管理相同的应用程序安装,减少了很多错误等。