我刚刚开始使用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'
知道是什么吗? 我想念什么吗?
答案 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。
我希望这能回答您的问题!