簡體   English   中英

使用Windows 10和Nodemon進行Docker熱加載節點應用

[英]Docker hot reloading node app with nodemon using Windows 10

我有一個快速應用,我正在嘗試使用docker for Windows 10作為開發環境,使用nodemon設置熱重載。 但是,當我在卷上安裝npm時,它似乎不起作用。

使用powershell時,我會像這樣使用卷:

docker build -t node-api。

docker run --rm -it -p 8080:8080 -v“ $ {PWD}:/ usr / src / app” node-api

哪個輸出此錯誤:

[nodemon] 1.18.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server/server.js`
internal/modules/cjs/loader.js:605
    throw err;
    ^

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
    at Function.Module._load (internal/modules/cjs/loader.js:529:25)
    at Module.require (internal/modules/cjs/loader.js:658:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/usr/src/app/server/server.js:1:79)
    at Module._compile (internal/modules/cjs/loader.js:722:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
[nodemon] app crashed - waiting for file changes before starting...

如果我排除-v標志並運行docker,則它不會出現任何錯誤,但不會檢測到更改或在文件保存時重新啟動。

Docker文件

FROM node:alpine

#Create app directory
WORKDIR /usr/src/app

#Install nodemon for hot reloading
RUN npm install nodemon -g

#Install app dependencies
#A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./

RUN npm install

#Bundle app source
COPY . .

EXPOSE 8080
CMD [ "nodemon", "-L", "server/server.js" ]

資料夾結構

server/

    >server.js

Dockerfile

package.json

Github回購代碼

問題在於,通過將整個主機app/目錄作為卷安裝,容器內的app/node_modules/將被主機的app/覆蓋,因此所有依賴項都將丟失。

解決方案是僅掛載所需的源代碼文件夾,即

docker run --rm -it -p 8080:8080 -v "${PWD}/server:/usr/src/app/server" node-api

暫無
暫無

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

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