簡體   English   中英

在 NodeJs 中使用 Docker-compose 進行熱重載

[英]Hot Reloading with Docker-compose in NodeJs

我在 Docker-compose + Nodejs 上看到了很多代碼庫,但它們都不夠簡單或基本,無法理解來自 docker-compose 的命令流。 我已經創建了一個非常基本的 nodejs 應用程序,我打算用它來啟用容器的熱重載。

我的 package.json 看起來像:

{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "First Last <first.last@example.com>",
"main": "server.js",
"scripts": {
    "start": "node server.js",
    "watch": "nodemon"
},
"dependencies": {
    "express": "^4.16.1",
    "nodemon": "^2.0.7"
}
}

Dockerfile 看起來像:

FROM node:14 as base

WORKDIR /home/node/app

COPY package*.json ./

RUN npm install -g nodemon && npm install

# Bundle app source
COPY . .

EXPOSE 4000
# RUN npm run start
CMD [ "npm", "start" ]

FROM node:14 as dev

WORKDIR /home/node/app

EXPOSE 4000

CMD ["npm", "watch"]

docker-compose.yml 文件如下所示:

version: '3.7'
services:
  ts-node-docker:
    build:
      context: .
      dockerfile: Dockerfile
      target: base
    volumes:
      - ./:/home/node/app/
    container_name: ts-node-docker
    expose:
      - '4000'
    ports:
      - '4000:4000'
    command: npm run watch

我應該做哪些更改才能在此代碼庫中啟用熱重載? 謝謝!

考慮到您僅將其用於開發。

你不應該使用音量

volumes:
      - ./:/home/node/app/

COPY

# Bundle app source
COPY . .

一起。

只需將您的Dockerfile更改為

FROM node:14 as dev

WORKDIR /home/node/app

EXPOSE 4000

CMD ["npm", "watch"]

並修改package.json

"scripts": {
    "watch": "nodemon src/index.js'"
  },

暫無
暫無

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

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