【发布时间】:2021-10-25 19:54:50
【问题描述】:
当启动应用程序(在 http://localhost:3001 上)并编辑一些文件时,Browsersync 不断重新加载并且永不停止。但是,不使用 Docker 时不会发生这种情况。
这种行为有原因吗?我错过了什么吗?我正在使用"browser-sync": "^2.27.5" 和 Gulp 版本4.0.2。这是输出:
node_1 | [15:14:32] Finished 'images' after 1.32 min
node_1 | [15:14:32] Finished 'build' after 1.32 min
node_1 | [15:14:40] Using gulpfile /usr/src/app/gulpfile.mjs
node_1 | [15:14:40] Starting 'watch'...
node_1 | [Browsersync] Proxying: http://localhost:8000
node_1 | [Browsersync] Access URLs:
node_1 | -----------------------------------
node_1 | Local: http://localhost:8000
node_1 | External: http://172.20.0.4:8000
node_1 | -----------------------------------
node_1 | UI: http://localhost:3001
node_1 | UI External: http://localhost:3001
node_1 | -----------------------------------
node_1 | [Browsersync] Watching files...
django_1 | [25/Aug/2021 15:15:37] "GET / HTTP/1.1" 200 45376
django_1 | [25/Aug/2021 15:15:38] "GET /static/js/index.js HTTP/1.1" 200 141793
django_1 | [25/Aug/2021 15:15:38] "GET /static/css/style.css HTTP/1.1" 200 5439548
node_1 | [15:15:48] Starting 'html'...
node_1 | ℹ - [HTML] Compiling...
node_1 | ✔ - [HTML] Success!
node_1 | [15:16:09] Finished 'html' after 21 s
node_1 | [15:16:09] Starting 'html'...
node_1 | ℹ - [HTML] Compiling...
node_1 | [Browsersync] Reloading Browsers... (buffered 214 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 72 events)
node_1 | ✔ - [HTML] Success!
node_1 | [15:16:34] Finished 'html' after 25 s
node_1 | [15:16:34] Starting 'html'...
node_1 | ℹ - [HTML] Compiling...
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 2 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 2 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 4 events)
node_1 | ✔ - [HTML] Success!
node_1 | [15:17:06] Finished 'html' after 32 s
node_1 | [15:17:06] Starting 'html'...
node_1 | ℹ - [HTML] Compiling...
node_1 | [Browsersync] Reloading Browsers... (buffered 36 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 6 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 51 events)
node_1 | [Browsersync] Reloading Browsers... (buffered 16 events)
我的 gulpfile 看起来像这样
gulp.task('watch', () => {
browserSync.init({
// The hostname is the name of your service in docker-compose.yml.
// The port is what's defined in your Dockerfile.
hostname: 'django',
port: 8000,
proxy: 'localhost:8000',
open: false,
reloadDelay: 1000,
timestamps: true,
files: ['./dist', './templates/local'],
});
gulp
.watch(`${options.paths.src.js}/**/*.*`, gulp.series('scripts'))
.on('change', browserSync.reload);
gulp
.watch(`${options.paths.src.css}/**/*.*`, gulp.series('styles'))
.on('change', browserSync.reload);
gulp
.watch(`${options.paths.src.img}/**/*.*`, gulp.series('images'))
.on('change', browserSync.reload);
gulp
.watch(`${options.paths.src.html}/**/*.*`, gulp.series('html'))
.on('change', browserSync.reload);
});
docker-compose.yml
version: '3'
volumes:
local_postgres_data: {}
local_postgres_data_backups: {}
notused:
services:
postgres:
build:
context: .
dockerfile: ./app/docker/postgres/Dockerfile
image: webapp_prodcution_postgres
volumes:
- local_postgres_data:/var/lib/postgresql/data:Z
- local_postgres_data_backups:/backups:z
env_file:
- ./app/.envs/.local/.env
django:
image: webapp_local_django
build:
context: .
dockerfile: ./app/docker/django/Dockerfile
volumes:
- ./app/:/usr/src/app/
command: /usr/src/app/docker/django/start_dev
ports:
- 8000:8000
env_file:
- ./app/.envs/.local/.env
depends_on:
- postgres
node:
image: webapp_local_node
build:
context: .
dockerfile: ./app/docker/node/Dockerfile
depends_on:
- django
volumes:
- ./app/:/usr/src/app/
- notused:/usr/src/app/node_modules/
command: bash -c "rm -rf /usr/src/app/node_modules/* && npm run dev"
ports:
- '3000:3000'
【问题讨论】:
-
我在非 Docker 项目中遇到了同样的症状。我在 Windows 上使用
eleventy并尝试摆弄各种browsersync属性(如reloadDebounce、reloadDelay等)。它们似乎有帮助,但似乎并没有解决文件更改在很长一段时间内涓涓细流的问题。
标签: docker django-templates gulp browser-sync gulp-watch