gpt4 book ai didi

Node.js docker 容器未更新以适应卷的变化

转载 作者:行者123 更新时间:2023-12-02 18:28:13 28 4
gpt4 key购买 nike

我正在尝试在我的 Windows 计算机上托管一个开发环境,该计算机托管前端和后端容器。到目前为止,我只在后端工作。所有文件都位于 C 盘上,通过 Docker Desktop 共享。

我有以下 docker-compose 文件和 Dockerfile,后者位于根目录中名为 backend 的目录内。

Dockerfile:

FROM node:12.15.0-alpine

WORKDIR /usr/app

COPY package*.json ./

RUN npm install

EXPOSE 5000

CMD [ "npm", "start" ]

docker-compose.yml:

version: "3"
services:
backend:
container_name: backend
build:
context: ./backend
dockerfile: Dockerfile
volumes:
- ./backend:/usr/app
environment:
- APP_PORT=80
ports:
- '5000:5000'

client:
container_name: client
build:
context: ./client
dockerfile: Dockerfile
volumes:
- ./client:/app
ports:
- '80:8080'

由于某种原因,当我对本地文件进行更改时,它们没有反射(reflect)在容器内。我正在通过稍微修改一个文件的输出来测试这一点,但每次我都必须重建容器才能看到更改生效。

我之前曾在 PHP 应用程序中使用过 Docker,并且基本上做过相同的事情。所以我不确定为什么 Node.js 应用程序不能使用它。我想知道我是否只是错过了一些明显的东西来说明为什么这不起作用。

如有任何帮助,我们将不胜感激。

最佳答案

Node 和 PHP 之间的区别在于,PHP 会自动获取请求之间的文件系统更改,但 Node 服务器不会。

我认为,如果您通过使用 docker-compose 向下然后向上弹起容器来重新启动 Node ,您会看到文件更改被拾取(无需重建内容!)。

如果您希望 Node 拾取文件系统更改而不需要反弹服务器,您可以使用一些 Node 工具。 nodemon 是其中之一:https://www.npmjs.com/package/nodemon 。按照本地安装的安装说明进行操作,并更新启动脚本以使用nodemon 而不是node。

另外,我确实认为您的 dockerfile 中有错误,您需要将源代码复制到您的工作目录中。我假设你从这里得到了最初的食谱:https://dev.to/alex_barashkov/using-docker-for-nodejs-in-development-and-production-3cgp 。这是下面的 docker 文件。您错过了一步!

FROM node:10-alpine

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install

COPY . .

CMD [ "npm", "start" ]

关于Node.js docker 容器未更新以适应卷的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60192208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com