【发布时间】:2019-02-25 13:46:04
【问题描述】:
我正在尝试为 node.js 项目设置 development 容器,以便与来宾共享我的本地源文件(因此我可以通过 dnsmasq 通配符请求到本地域端口 80,但我想这与问题无关)。当我在本地进行更改时,容器中的节点进程会重新启动:
Dockerfile:
FROM node:8
# Install app dependencies
RUN npm install -g nodemon
COPY package.json /tmp/package.json
RUN cd /tmp && npm install --production
NODE_PATH=/tmp/node_modules
WORKDIR /app
EXPOSE 8080
EXPOSE 9229
CMD nodemon --inspect index.js
docker-compose.json(截断):
version: '3.3'
services:
app:
build: .
container_name: 'my-app'
restart: unless-stopped
ports:
- 8080:8080
- 9229:9229
volumes:
- .:/app
因为node_modules是安装在Dockerfile里面的,所以每次给packages.json加个包都得手动重新构建容器:
docker-compose stop
docker-compose build
docker-compose up -d
我可以使用 inotify 为此设置一个监视,但我不喜欢停止整个堆栈(包括那里定义的其他服务)。
是否可以将这个逻辑放在容器中,并在每次更改package.json 时重新运行npm install?
【问题讨论】:
标签: node.js docker docker-compose package.json