Docker Compose Watch là gì?
Docker Compose Watch là một tính năng hữu ích trong Docker Compose cho phép bạn tự động đồng bộ hóa mã nguồn cục bộ với mã trong các container Docker mà không cần phải sử dụng volumes. Thay vì sử dụng lệnh docker-compose up
, bạn có thể dùng lệnh docker-compose watch
để theo dõi các thay đổi trong mã nguồn và thực hiện các hành động tương ứng.
Cách thực hiện
Trong bài viết này, chúng ta sẽ thử nghiệm tính năng Docker Compose Watch với một dự án mẫu mà bạn có thể clone từ GitHub. Thực hiện các bước sau để bắt đầu:
-
Clone dự án mẫu:
git clone https://github.com/dockersamples/avatars.git cd avatars
-
Đây là cấu trúc của file
compose.yaml
:yamlservices: 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
Giải thích các thuộc tính
Trong file compose.yaml
, thuộc tính watch
chứa danh sách các quy tắc, với mỗi quy tắc bao gồm một đường dẫn mà nó theo dõi và một hành động (action
) sẽ được thực hiện khi có thay đổi trong đường dẫn đó. Có hai loại hành động:
- sync: Sao chép các tệp đã thay đổi vào các dịch vụ container đang chạy.
- rebuild: Kích hoạt việc xây dựng image và tái tạo các container đang chạy.
Chẳng hạn, khi có thay đổi trong thư mục web/
, Docker Compose sẽ tự động sao chép tệp đó vào vị trí tương ứng trong /app
bên trong container. Nhờ vào việc Webpack hỗ trợ Hot Module Reload, các thay đổi này sẽ được tự động phát hiện và áp dụng.
Đối với các thay đổi yêu cầu cài đặt thư viện mới, khi package.json
thay đổi, Docker Compose sẽ xây dựng lại image và tái tạo container web.
Khởi động môi trường phát triển
Để khởi động môi trường phát triển, bạn chỉ cần chạy hai lệnh sau:
bash
docker compose up -d
docker compose watch
Sau khi chạy lệnh, bạn có thể mở trình duyệt và truy cập đường dẫn http://localhost:5735. Bạn sẽ thấy rằng mọi thay đổi trong mã nguồn đều được áp dụng một cách tự động vào các container.
Kết luận
Việc sử dụng Docker Compose Watch giúp bạn thiết lập một môi trường phát triển một cách nhanh chóng và hiệu quả hơn bao giờ hết. Nếu bạn gặp bất kỳ khó khăn nào trong quá trình thiết lập, đừng ngần ngại để lại câu hỏi cho tôi ở phần bình luận bên dưới.
Nguồn tham khảo: Docker Documentation
source: viblo