使用docker设置vuejs-template-webpack在保存文件后不会重新加载

时间:2018-10-18 15:41:32

标签: docker docker-compose dockerfile

我刚刚开始使用docker,并使用vue js设置了我的项目, 它在我运行docker-compose up时有效,但是在保存任何文件后仍无法保存。.它不在监听

docker-compose日志

web_1  | yarn run v1.10.1
web_1  | $ webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0
web_1  |  84% module id optimiza  DONE  Compiled successfully in 4455ms15:29:27
web_1  |
web_1  |  I  Your application is running here: http://localhost:8080

docker-compose.yml

version: '3'
services:
  web:    
    build: ${CONTAINER_ROOT}/web/
    command: yarn run dev
    volumes:
    - ${PROJECT_ROOT}:/var/www

    ports:
    - "8080:8080"

.env

CONTAINER_ROOT=./docker-containers
PROJECT_ROOT=./www

Dockerfile

FROM node:9.11.1-alpine

# install simple http server for serving static content
RUN npm install -g http-server
RUN npm install -g yarn


WORKDIR /var/www/src

# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./

# install project dependencies
RUN yarn

# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .

# build app for production with minification
RUN yarn run build

EXPOSE 8080
CMD [ "http-server", "dist" ]

================更新===============

终端输出

docker-compose配置

services:
  web:
    build:
      context: /Users/xxxxxxx/Documents/dev/node-static-vue-template/docker-containers/web
    command: npm run dev
    ports:
    - 8080:8080/tcp
    volumes:
    - /Users/xxxxxxxxx/Documents/dev/node-static-vue-template/www:/var/www:rw
version: '3.0'

知道是什么吗? 我想念什么吗?

1 个答案:

答案 0 :(得分:0)

.env文件不能保证在运行时对其进行设置。 .env文件由dotenv npm软件包运行和读取,与docker无关。在运行docker-compose build之前是否已导出变量?据我所知,当您的docker-compose使用环境变量时,.env文件仅适用于节点运行时。

因此,如果您正在运行linux / mac,则只需运行 export CONTAINER_ROOT=./docker-containers(注意没有空格) 也对project_root重复此操作。这应该在您从中运行docker-compose build的命令行上完成。 N.B.用这种方式设置的环境变量不是永久性的,并且在每次终端重启后都会重置。

此问题的快速解决方案是对其进行硬编码,并查看卷是否按预期正常工作,然后实施这些卷。

此外,您还可以使用pwd之类的linux命令来获取文档根目录,这可能比自定义env变量更容易。

您还使用了npm特定的package-lock.json-> yarn使用yarn.lock文件吗?为了减少膨胀软件和docker容器的大小,我建议仅使用npm run build而不是安装和使用yarn。可能会更容易,将使用您的package-lock.json。

我希望这能回答您的问题!