在docker容器内重新加载代码。 PM2。 节点js

我尝试在Docker容器中重新加载我的节点js应用程序代码。 我使用pm2作为进程pipe理器。 这是我的configuration: 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"] 

ecos.prod.config.json(aka pm2 config)

 { "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 } ] } 

泊坞窗,compose.yaml

 version: "3" services: web: build: . volumes: - ./:/koa2-app ports: - "3000:3000" 

npm运行生产 – pm2开始–attach ecos.prod.config.json

我在CLI中运行“docker-compose”,它可以工作,我可以在localhost:3000上与我的应用进行交互。 但是,如果对代码进行一些更改,它将不会显示在网页中。 如何在docker中configuration代码重新加载?

PS和最佳实践问题:开发使用docker的东西真的可以吗? 或docker集装箱最适合生产使用。

看来你在一个地方COPY你的代码,而在另一个地方。

尝试:

 version: "3" services: web: build: . volumes: - ./:/usr/src/koa2-app ports: - "3000:3000" 

然后,当你改变容器外部的js代码(你的IDE)时,现在PM2能够看到改变,并因此重新加载应用程序(你需要确定该部分)。

关于在开发环境中使用Docker:由于很多原因,这是一件非常好的事情。 例如,您可以针对不同的环境pipe理相同的应用程序安装,从而减less大量的错误等。