【发布时间】:2021-06-17 04:22:13
【问题描述】:
我在 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
我应该做哪些更改才能在此代码库中启用热重载?谢谢!
【问题讨论】:
-
可以在主机上安装Node吗?这通常很容易安装,您甚至可能已经为其他项目安装了它。然后你可以直接运行
npm run watch,而不需要解决 Docker 的隔离特性。
标签: node.js docker docker-compose