+5

Sử dụng docker compose watch để tạo môi trường phát triển

Docker compose watch là gì?

Trong docker compose, thuộc tính watch cho phép bạn có thể sử dụng docker-compose watch thay vì docker-compose up và tự động đồng bộ hóa mã nguồn cục bộ với mã trong vùng chứa Docker mà không cần sử dụng volumes.

Chúng ta sẽ thử tính năng này với project sau. Các bạn clone project sample tại đây https://github.com/dockersamples/avatars/

git clone https://github.com/dockersamples/avatars.git
cd avatars

File compose.yaml sẽ như sau:

services:
  api:
    image: avatars-api
    build:
      context: .
      dockerfile: ./deploy/api.dockerfile
    ports:
      - 5734:80
    develop:
      watch:
        - path: api/requirements.txt
          action: rebuild
        - path: api/
          target: /app/api/
          action: sync

  web:
    image: avatars-web
    build:
      context: .
      dockerfile: ./deploy/web.dockerfile
    ports:
      - 5735:5173
    develop:
      watch:
        - path: web/package.json
          action: rebuild
        - path: web/yarn.lock
          action: rebuild
        - path: web/
          target: /app
          action: sync

Thuộc tính watch chứa danh sách các quy tắc, mỗi quy tắc chứa một đường dẫn mà chúng watch và một action được thực thi khi tệp trong đường dẫn thay đổi. Có 2 action có thể thực hiện:

  • sync - Sao chép các tệp đã thay đổi vào các service container đang chạy.
  • rebuild - Kích hoạt image build và recreate service container đang chay.

Trong file compose.yaml, bất cứ khi nào file trong thư mục web/ được thay đổi, Compose sẽ sao chép tệp đó vào vị trí tương ứng trong /src/web bên trong container. Vì Webpack hỗ trợ Hot Module Reload nên các thay đổi sẽ tự động được phát hiện và áp dụng.

Việc thêm các thư viện mới không thể được thực hiện nhanh chóng, vì vậy bất cứ khi nào package.json được thay đổi, Compose sẽ build image và tạo lại container web.

Chạy các lệnh sau:

docker compose up -d
docker compose watch

Mở dường dẫn http://localhost:5735, ta sẽ thấy mỗi khi thay đổi file source code, các thay đổi tự động được áp dụng vào các container.

Việc sử dụng docker compose watch sẽ giúp tạo môi trường phát triển một cách nhanh chóng và thuận tiện. Nếu gặp khó khăn hãy để lại bình luận cho mình ở bên dưới.

Nguồn tham khảo: https://docs.docker.com/compose/file-watch/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí