如何让Grunt livereload在Docker中工作?

我试图在Windows中使用Docker作为开发环境。

我正在开发的应用程序使用Node,NPM和Bower设置开发工具,使用Grunt来运行它的任务,并包含实时重新加载,以便在代码更改时更新应用程序。 相当标准。 它工作正常以外的Docker,但我一直运行到Grunt错误Fatal error: Unable to find local grunt. 不pipe我在Docker里面怎么做。

我最近的工作是在构build时将所有npm和bower依赖项安装到图像中的应用程序目录中,并将应用程序的Gruntfile.js复制到该目录。

然后在Docker-Compose中创build一个链接到主机应用程序的卷,并要求Grunt使用Grunt的--base选项来观看该卷。 它仍然不会工作。 我仍然得到致命的错误。

以下是Docker文件的问题:

Dockerfile:

 # Pull base image. FROM node:5.1 # Setup environment ENV NODE_ENV development # Setup build folder RUN mkdir /app WORKDIR /app # Build apps #globals RUN npm install -g bower RUN echo '{ "allow_root": true }' > /root/.bowerrc RUN npm install -g grunt RUN npm install -g grunt-cli RUN apt-get update RUN apt-get install ruby-compass -y #locals ADD package.json /app/ ADD Gruntfile.js /app/ RUN npm install ADD bower.json /app/ RUN bower install 

泊坞窗,compose.yml:

 angular: build: . command: sh /host_app/startup.sh volumes: - .:/host_app net: "host" 

startup.sh:

 #!/bin/bash grunt --base /host_app serve 

我实际上可以在Docker中运行应用程序的唯一方法是在构build时将所有文件复制到映像中,然后在那里创build开发依赖关系,然后针对复制的文件运行Grunt。 但是,我必须在每次更改应用程序中的任何内容时运行新的构build。

一定有办法吗? 我的Django应用程序能够在Docker中实时重新加载没有问题,根据Docker自己的Django快速启动说明 。 所以我知道实时重新加载可以与Docker一起工作。

PS:我已经尝试在卷上使用--gruntfile并使用Grunt的--gruntfile选项,但仍然崩溃。 我也尝试在共享卷中创buildDocker-Compose时间依赖关系,但是遇到npm错误,需要解压tars。 我觉得虚拟机无法处理在共享文件系统和扼stream器上运行的数据量,或者Windows文件系统可能无法正确存储Linux文件。 或者其他的东西。