使用docker-compose进行Vue.js本地开发

时间:2019-05-01 15:14:04

标签: docker vue.js docker-compose hot-reload

我尝试使用docker-compose进行本地开发。但是如果有更改,我必须重新构建代码...因此我需要此“热重载”功能,但无法实现。也许有人可以帮助我或给我一些提示。 我不像服务器那样使用Nginx作为代理(Envoy)。

Vue.js Docker

FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /usr/app /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Docker-Compose文件

version: '3.7'

services:
  front-envoy:
    build:
      context: ./envoy
      dockerfile: Dockerfile-frontenvoy
    volumes:
      - ./envoy/front-envoy.yaml:/etc/front-envoy.yaml
    networks:
      - envoymesh
    expose:
      - "80"
      - "8001"
    ports:
      - "8000:80"
      - "8001:8001"

  frontend:
    container_name: frontend
    restart: always
    build:
      context: ./frontend
      dockerfile: Dockerfile
    volumes:
      - ./frontend:/app
      - /app/node_modules      
    networks:
      envoymesh:
        aliases:
          - frontend
    environment:
      - SERVICE_NAME=frontend   
      - CHOKIDAR_USEPOLLING=true    
    expose:
      - "80"
    ports:
      - "8081:8081"


networks:
  envoymesh: {}

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

npm运行服务是在热重载模式下运行vue.js的部分。在生产环境中,命令为npm run build。

对于开发人员环境,要使用以下命令启动应用程序

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

代替

CMD ["nginx", "-g", "daemon off;"]

注意:您可以将nginx用于产品环境应用程序。 参考1:Vue.js app on a docker container with hot reload 参考2:https://shekhargulati.com/2019/01/18/dockerizing-a-vue-js-application/