我看过很多关于 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'"
},
https://stackoverflow.com/questions/68012893/
相关文章:
mysql - Spring Boot、Java、Docker Compose,尝试在两个容器(my
git - 如何让 Git 在 Windows 上的 RStudio 中打开提交消息?
python - 天蓝色函数 : How do I write my logs to Azure A
javascript - 如何验证 Cypress 中的悬停文本(工具提示)?
azure - Azure DevOps 中的应用程序服务名称显示未找到结果
android - 在 Android 11 中录制音频的前台服务有什么意义?