docker和吞咽

我正在使用Windows 7并且有一个在boot2docker上运行的虚拟机。

docker-compose.yml

web: image: nginx ports: - "80:80" volumes: - /var/www/docker/nginx/:/etc/nginx/conf.d/ - /var/www/:/var/www/html/ links: - php:php php: build: php volumes: - /var/www/:/var/www/html/ - /var/www/docker/php.ini:/usr/local/etc/php/php.ini - /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock links: - db:db db: image: mysql ports: - "13306:3306" volumes: - /var/lib/boot2docker/mysql/:/var/lib/mysql/ environment: - MYQSL_ROOT_PASSWORD=root 

gulpfile.js

 var gulp = require('gulp'); var postcss = require('gulp-postcss'); var processors = [ require('precss'), require('autoprefixer')({browsers: ['last 2 versions'] }), require('cssnano') ]; gulp.task('postcss', function() { gulp.src('gulp/stylesheets/*.css') .pipe(postcss(processors)) .pipe(gulp.dest('assets/stylesheets/')) }); gulp.task('watch-postcss', function() { gulp.watch("gulp/stylesheets/*.css", ["postcss"]); }); 

我试图运行Gulp编译我的CSS文件与虚拟机之外的postcss,但它似乎打破我的虚拟机的共享文件夹中的输出文件。 例如,如果我编译这个:

 body { background: red; } 

我得到这在输出文件(这是我想要的):

 body{background:red} 

但是,如果我重新编译这样的postcss样式表:

 body { text-align: center; } 

我在我的输出文件中得到这个:

 body{background:red}    

我的本地(Windows)文件被正确更新,这个bug只在虚拟机共享文件夹内的文件中。

我是Docker的新手,不知道自己做错了什么。 我应该在虚拟机内运行Gulp吗? 或者在一个容器内? 如果是的话,我如何在我的虚拟机/容器中安装和使用Gulp?

或者,也许我在docker-compose文件中做了错误的事情?

我很确定这个问题是由nginx引起的。 你应该添加sendfile off; 到你的nginx虚拟主机configuration。