gulp watch似乎冻结在Docker

时间:2015-07-03 20:24:32

标签: javascript docker gulp boot2docker gulp-watch

我试图" dockerize"我们的发展环境。我们有一个gulp构建系统,可以监视我们的js / sass / jade文件的变化。这一切都设置为在docker之外工作得很好。

我创建了一个docker容器,然后将代码库安装到其中(使用卷)。所有前驱npm安装和bower安装成功完成。我的最后一步运行gulp并且它正常运行并构建但是然后不会对我们的任何js / sass / jade文件进行任何后续更改。

我使用以下命令运行构建系统:

docker run -it -v $(pwd):/code/ client gulp reset

有没有人在他们的开发环境中有类似的设置?你做了什么让你的gulp手表工作并展示建筑物?

编辑:我想我可以在docker之外进行gulp构建/监视,只安装生成的文件,但我宁愿将其全部包含在docker内部,这样主机就不用担心了关于构建/运行我们的应用程序的任何依赖项

EDIT2:这是我的dockerfile和docker-compose.yml

#Dockerfile
FROM node:0.12.5
RUN mkdir /code

WORKDIR /code
RUN mkdir client
WORKDIR client
RUN mkdir .tmp
ADD ./client/package.json /code/client/package.json
ADD ./client/bower.json /code/client/bower.json

RUN npm install gulp -g
RUN npm install bower -g
RUN npm install
RUN npm rebuild node-sass
RUN bower --allow-root install

CMD gulp reset

client:
  build: .
  volumes:
    - .:/code

1 个答案:

答案 0 :(得分:3)

我从来没有能够让任何基于inotify的文件观察者能够使用虚拟框客人添加,并且基于this ticket它不太可能很快就可用。我的首选方法如下:

  • 假设我的本地源代码位于/ code
  • 在/ code
  • 上本地运行我的观察者
  • 检测到更改时,rsync local / code to remote / code(作为仅容器容量装入)在容器中

示例rsync:

docker run --rm --volumes-from sourcecode my/image \
    rsync \
        --delete \
        --recursive \
        --safe-links \
        --exclude .git  --exclude node_modules  \
    /local/repo/ /container/repo

这可以避免很多问题,并且可以让您详细了解容器环境的内容。