docker webpack reload very slowly

Lượt xem: 936

docker webpack reload very slowly

Gần đây dandev có tham gia dự án ruby on rails sử dụng webpacker chạy trên docker. Do tính bảo mật nên mình không làm video cũng như cung cấp ảnh tình trạng cụ thể mà mình chỉ nói sơ qua. Hi vọng nếu bạn nào gặp phải tình huống như của dandev thì có thể tham khảo để khắc phục.
Tình huống mình gặp phải khá là đâu đầu. Đó là nếu chạy trên môi trường ubuntu thì hệ thống chạy vẫn rất nhanh và mượt reload lại chỉ mất 1 vài giây là lên. Kể cả reload docker hay reload page. Tuy nhiên mình lập trình lại chủ yếu sử dụng windows + docker. Mình đã thử dùng watcher và không để watcher cho webpacker và ruby tuy nhiên nó đều chậm khi mình reload lại page hoặc reload lại docker mất vài phút mới vào được page. Nhiều khi sửa scss hoặc js bên webpacker reload lại vài 3 phút nó mới lên xong nó lại không nhận webpacker nữa mới cay. Lại phải restart lại docker. Việc này lặp đi lặp lại làm ảnh hưởng rất lớn tới tiện độ dự án. Ngoài ra khi view log của docker mình thấy nó ghi lỗi [Webpacker] Everything's up-to-date. Nothing to do khá nhiều. Đại loại:


Started GET "/" for ::1 at 2019-12-23 09:53:34 +1100
Processing by PagesController#index as HTML
  Rendering layouts/application.html.slim
  Rendering pages/index.html.slim within layouts/application
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do
[Webpacker] Everything's up-to-date. Nothing to do  
  Rendered pages/index.html.slim within layouts/application (Duration: 716.1ms | Allocations: 131629)
  Rendered layouts/application.html.slim (Duration: 1632.2ms | Allocations: 251011)
Completed 200 OK in 1635ms (Views: 1632.1ms | ActiveRecord: 1.2ms | Allocations: 252079)


Mình ghĩ có thể do thằng Webpacker này nó complier nên làm chậm. Quả đúng là như vậy các bạn ạ. Nếu bạn nào gặp phải tình cảnh tương tự như của mình thì hãy thử bổ sung file webpacker.rb vào thư mục config/initializers với nội dung sau thử xem nhé. Và sau khi thêm nhớ restart lại docker nha
 


#config/initializers/webpacker.rb
module Webpacker
  module OneTimeCompiler
    def compile
      @compiled ||= super
    end
  end

  Compiler.prepend(OneTimeCompiler) if Webpacker.config.compile?
end

chúc bạn khác phục thành công