当前位置: 首页 > 知识库问答 >
问题:

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

蒙化
2023-03-14
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"]
{
  "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
    }
  ]
}
version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/koa2-app
    ports:
      - "3000:3000"

我在CLI中运行“docker-compose up”,它工作了,我可以在本地主机:3000上与我的应用程序交互。但是如果对代码做一些修改,它就不会出现在Web上。如何在Docker内配置代码重新加载?

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

共有1个答案

燕元明
2023-03-14

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

尝试:

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

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

 类似资料:
  • 问题内容: 我在由运行的docker容器中存在一些问题。 Docker文件 还有我的docker-compose.yml 当我运行它时,一切都很好,但编辑文件不会增加应用程序的重载。文件已更改,我确定是因为我通过ssh连接对其进行了检查,并且容器中的文件已被编辑。再次重新启动容器时,将应用所有更改。我以为当我仅通过docker切换建筑物图像来构成此图像时,它就会消失,但事实并非如此。 当我打电话时

  • 我尝试在 Docker 容器内启动简单的 nodejs 服务器,并使用 chrome://inspect 或 WebStorm 对其进行调试。调试端口 9229 已绑定,但检查不起作用。另一方面,当我在没有docker的情况下运行相同的代码时,我可以在 chrome://inspect 和WebStorm中很好地检查它。 有人能解释一下为什么Chrome不能在Docker容器中检查nodejs代码

  • 我正在为nodejs应用程序上的典型开发人员规划工作流。我想你们大多数人都会: git clone[appcode](具有卷映射到本地路径的Dockerfile) 然后我编辑一些代码,最好使用像WebStorm或文本编辑器Sublime等IDE。然后终端Ctrl C终止当前进程 以上所有内容看起来都很标准吗? 我的主要问题是,是否有人使用IDE或节点检查对容器进行调试? 我尝试过暴露端口等..连接

  • 问题内容: 我正在重构几个node.js服务。所有这些以前都是在虚拟服务器上开始的,如果进程崩溃,它们只会重新启动。 现在,转向容器化和无状态的应用程序结构,我认为该过程应该退出,并且应该在发生故障时重新启动容器。 那是对的吗?有好处还是不利? 问题答案: 我的想法是不要使用容器内进程管理器(永远是pm2),而是通过(或该选项的其他一种方式)使用docker restart策略。这与整个docke

  • 问题内容: 我希望我的flask服务器检测代码中的更改并自动重新加载。我在docker容器上运行它。每当我更改某些内容时,都必须重新构建容器。我不知道哪里出了问题。这是我第一次使用烧瓶。 这是我的树 和代码(app.py) 和docker-compose 请给我一些建议。先感谢您。 问题答案: 如已完成,在调试模式下,Flask支持代码重新加载。问题在于该应用程序正在容器上运行,这使它与正在开发的

  • 我试图用TheNewBoston的教程制作一个蛇游戏,因为我是一名中学生,在Python方面没有太多经验。代码是: 但是,当我执行、播放、丢失并按C重试时,会出现此错误。当我想退出时,Q可以正常工作,但C只是退出,并打印此错误: C:\Python34\python。exe“C:/Users/Ded/PycharmProjects/PyGame/PyGame Tutorial.py”回溯(上次调用