[英]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.