Docker Compose热重载不适用于vuejs应用

时间:2019-12-07 08:05:43

标签: docker vue.js docker-compose

我在docker上有一个vueJS应用程序runnig。 当我通过yarn serve运行应用程序时,它运行良好,在docker中也是如此。

我的问题是热重装将无法工作。

我的Dockerfile:

FROM node:12.2.0-alpine

WORKDIR /app
COPY package.json /app/package.json
RUN npm install
RUN npm install @vue/cli -g

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

我的docker-compose.yml:

version: '3.7'

  services:

    client:
      container_name: client
      build:
        context: .
        dockerfile: Dockerfile
      volumes:
        - '.:/app'
        - '/app/node_modules'
      ports:
        - '8082:8080'

有人能看到我犯的错误吗?

4 个答案:

答案 0 :(得分:1)

我找到了解决方案: 我在撰写文件中添加了以下内容:

environment: 
  - CHOKIDAR_USEPOLLING=true

答案 1 :(得分:1)

以上答案之一建议为chokidar轮询设置环境变量。根据{{​​3}},您可以在vue.config.js中将轮询选项设置为true。

module.exports = {
  configureWebpack: {
    devServer: {
      port: 3000,
      // https://github.com/vuejs-templates/webpack/issues/378
      watchOptions: {
        poll: true,
      },
    },
  }
};

此外,请确保根据您的工作目录等正确安装要装入的卷,以确保正确监视文件。

答案 2 :(得分:1)

过去对我有用的是在 docker-compose.yml 文件中使用它:

  frontend:
    build: 
      context: .
      dockerfile: vuejs.Dockerfile
    # command to start the development server
    command: npm run serve
    # ------------------ #
    volumes:
      - ./frontend:/app
      - /app/node_modules # <---- this enables a much faster start/reload
    ports:
      - "8080:8080"
    environment: 
      - CHOKIDAR_USEPOLLING=true # <---- this enables the hot reloading

答案 3 :(得分:0)

还暴露8080端口

FROM node:12.2.0-alpine

EXPOSE 8080 # add this line in docker file.

WORKDIR /app
COPY package.json /app/package.json
RUN npm install
RUN npm install @vue/cli -g

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

Docker撰写为

version: '3.7'

  services:

    client:
      container_name: client
      build:
        context: .
        dockerfile: Dockerfile
      volumes:
        - '.:/app'
        - '/app/node_modules'
      ports:
        - '8080:8080'

服务器将在localhost:8080中运行