首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在docker中创建实时重载的开发环境?(NodeJS、Redis和Vue)

如何在docker中创建实时重载的开发环境?(NodeJS、Redis和Vue)
EN

Stack Overflow用户
提问于 2019-12-24 03:07:28
回答 1查看 1.5K关注 0票数 1

我一直在尝试在我的windows机器上创建一个docker开发环境。我的应用程序的结构是一个express/node后端,一个vue-cli生成的客户端和一个用于缓存的redis-server。

我设法让这个项目运行起来,然而,我正在与之斗争的最后一块是热重新加载。我已经安装了nodemon作为依赖项,并在package.json文件中添加了一个脚本。每当我对服务器进行更改时,我都希望项目重新启动并显示新的更新。这是我当前的设置。根据我所读到的,它与卷有关(我对docker非常陌生)。

API/服务器目录结构

代码语言:javascript
复制
backend
- server.js (express server)
- Dockerfile
- docker-compose.yml
- Models
- ect...

Dockerfile

代码语言:javascript
复制
FROM node:8
WORKDIR /app
COPY package.json /app
COPY . /app
RUN npm install
CMD ["npm", "start"]
EXPOSE 3000

docker-compose.yml

代码语言:javascript
复制
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服务上添加volumes字段时,将抛出以下错误

代码语言:javascript
复制
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字段,它就会按预期顺利运行,但是我无法开始接近热重新加载。

EN

回答 1

Stack Overflow用户

发布于 2019-12-24 03:23:40

您的问题只是nodemon不在您的可执行文件路径上。npm install不会为您做到这一点。

有很多方法可以解决这个问题,但最简单的方法是在容器中全局安装nodemon:

代码语言:javascript
复制
RUN npm install -g nodemon --no-optional
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59460202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档