带有热重载的 docker 容器上的 Vue.js 应用程序

Posted

技术标签:

【中文标题】带有热重载的 docker 容器上的 Vue.js 应用程序【英文标题】:Vue.js app on a docker container with hot reload 【发布时间】:2019-04-14 05:39:30 【问题描述】:

在 docker 实例上运行我的 vue.js 应用程序时,我有一个显着的延迟和高 CPU 使用率。

这是我的 docker 设置

docker-compose.yml

version: '2'
services:

  app:
    build:
      context: ./
      dockerfile: docker/app.docker
    working_dir: /usr/src/app
    volumes:
    - ~/.composer-docker/cache:/root/.composer/cache:delegated
    - ./:/usr/src/app
    stdin_open: true
    tty: true
    environment:
    - HOST=0.0.0.0
    - CHOKIDAR_USEPOLLING=true
    ports:
    - 8080:8080

app.docker

# base image
FROM node:8.10.0-alpine

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
COPY package*.json ./

RUN npm install

# Bundle app source
COPY . .

EXPOSE 8080

CMD [ "npm", "run", "serve"]

当我输入 docker-compose up -d 并且我的应用程序正在 http://localhost:8080/ 中加载时,此设置工作正常 但是热重载会在 10 秒后发生,然后 15 秒后它会继续增加,我的笔记本电脑 cpu 使用率达到 60% 并且还在增加

我在使用 16 GB 内存的 mac book pro,对于 docker,我启用了 4 个 cpu 和 6 GB 内存。

如何解决这个问题?

【问题讨论】:

您是否尝试使用 CHOKIDAR_INTERVAL=1000 设置间隔? 【参考方案1】:

delegatedcached 选项之一添加到安装您的应用程序目录的卷中。尤其是使用缓存,我体验到了显着的性能提升:

volumes:
  - ~/.composer-docker/cache:/root/.composer/cache:delegated
  - ./:/usr/src/app:cached

【讨论】:

以上是关于带有热重载的 docker 容器上的 Vue.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何设置我的 Vue.js 站点以在每次热重载事件时清除浏览器的 Javascript 控制台?

如何在 ReactJS Docker 中热重载

Vue.js / webpack:当热重载编译它们时,如何清除旧的包 main-*.js 文件?

由搭建Vue.js了解webpack,vue-loader和热重载

由搭建Vue.js了解webpack,vue-loader和热重载

使用 golang 在 docker 中热重载不起作用(github.com/cosmtrek/air)