簡體   English   中英

Node.js docker 容器未根據體積變化進行更新

[英]Node.js docker container not updating to changes in volume

我正在嘗試在托管前端和后端容器的 Windows 機器上托管開發環境。 到目前為止,我只在后端工作。 所有文件都在 C 驅動器上,該驅動器通過 Docker 桌面共享。

我有以下 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'

出於某種原因,當我對本地文件進行更改時,它們不會反映在容器內。 我通過稍微修改我的一個文件的輸出來對此進行測試,但我每次都必須重建容器才能看到更改生效。

我之前在PHP申請中和Docker合作過,基本上都做過同樣的事情。 所以我不確定為什么這不適用於 Node.js 應用程序。 我想知道我是否只是遺漏了一些明顯的東西,說明為什么這不起作用。

任何幫助,將不勝感激。

節點和 PHP 之間的區別在於 php 自動獲取請求之間的文件系統更改,但節點服務器不會。

我想你會看到,如果你通過用 docker-compose 向下然后向上彈跳容器來重新啟動節點(不需要重建東西),你會看到文件更改被拾取。

如果您希望節點獲取文件系統更改而不需要反彈服務器,您可以使用一些節點工具。 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" ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM