Node.js 在docker容器中重新加载代码。PM2。节点js

Node.js 在docker容器中重新加载代码。PM2。节点js,node.js,docker,pm2,Node.js,Docker,Pm2,我尝试在docker容器中重新加载我的NodeJS应用程序代码。我使用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

我尝试在docker容器中重新加载我的NodeJS应用程序代码。我使用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"]
生态系统.prod.config.json(又名pm2配置)

docker compose.yaml

version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/koa2-app
    ports:
      - "3000:3000"
npm运行生产- pm2启动--附加生态系统.prod.config.json

我在CLI中运行“docker compose up”,它可以工作,我可以在localhost:3000上与我的应用程序交互。但若对代码做一些修改,它将不会出现在web上。如何在docker内部配置代码重新加载


附言和最佳实践问题:使用docker的东西开发真的可以吗?或docker容器最适合生产使用

似乎您将代码复制到了一个地方,而卷在了另一个地方

尝试:

然后,当您在容器(IDE)外部更改js代码时,现在PM2能够看到更改,因此可以重新加载应用程序(您需要确保这一部分)


关于在开发环境中使用Docker:这是一件非常好的事情,因为有很多原因。例如,您为不同的环境管理相同的应用程序安装,从而减少了许多错误等。

您是否验证了容器中的文件是否已更新?这里有两个可能的问题。Docker没有正确更新文件,或者您的服务器没有检测到更改。您可以使用
docker compose exec web sh
获取shell并验证文件是否正确修改。选中。docker容器中的文件没有更新。它对我有效。还感谢您的最佳实践问答!我简直不敢相信我没有看到docker构建工作目录和compose装载目标路径之间的差异。谢谢
version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/koa2-app
    ports:
      - "3000:3000"
version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/usr/src/koa2-app
    ports:
      - "3000:3000"