我一直在尝试在Windows计算机上创建docker开发环境。我的应用程序的结构是一个Express / Node后端,一个vue-cli生成的客户端和一个用于缓存的redis服务器。
我设法使项目开始运行,但是我苦苦挣扎的最后一部分是热重装。我已经将nodemon安装为依赖项,并将脚本添加到package.json文件。每当我对服务器进行更改时,我都希望项目重新启动并显示新的更新。这是我当前的设置。从我读到的内容来看,这与卷有关(我对docker非常陌生)。
API /服务器目录结构
backend
- server.js (express server)
- Dockerfile
- docker-compose.yml
- Models
- ect...
Dockerfile
FROM node:8
WORKDIR /app
COPY package.json /app
COPY . /app
RUN npm install
CMD ["npm", "start"]
EXPOSE 3000
docker-compose.yml
version: "3"
services:
web:
container_name: web-container
restart: always
depends_on:
- redis
build: .
volumes:
- .:/app
ports:
- "80:3000"
links:
- redis
redis:
container_name: redis-container
image: "redis:latest"
ports:
- "6379:6379"
volumes:
- ./data:/data
重要:
在Web服务上添加卷字段时,引发以下错误
web-container | > projectname@1.0.0 start /app
web-container | > nodemon server.js --trace-warnings
web-container |
web-container | sh: 1: nodemon: not found
web-container | npm ERR! code ELIFECYCLE
web-container | npm ERR! syscall spawn
web-container | npm ERR! file sh
web-container | npm ERR! errno ENOENT
web-container | npm ERR! projectname@1.0.0 start: `nodemon server.js --trace-warnings`
web-container | npm ERR! spawn ENOENT
web-container | npm ERR!
web-container | npm ERR! Failed at the projectname@1.0.0 start script.
web-container | npm ERR! This is probably not a problem with npm. There is likely additional logging o utput above.
web-container | npm WARN Local package.json exists, but node_modules missing, did you mean to install?
web-container |
web-container | npm ERR! A complete log of this run can be found in:
web-container | npm ERR! /root/.npm/_logs/2019-12-23T18_42_42_900Z-debug.log
如果我从服务中删除了volumes字段,它会按预期顺利运行,但是我无法开始进行热重装。
答案 0 :(得分:0)
您的问题只是nodemon不在您的可执行路径上。 npm install不会为您做到这一点。
有很多方法可以解决此问题,但是最简单的方法是在容器中全局安装nodemon:
RUN npm install -g nodemon --no-optional