Docker·57 питань

Як використовувати Docker Compose Watch для автоматичної синхронизації коду при локальній розробці?

Відповідь

Docker Compose Watch є вбудованим інструментом, призначеним для прискорення циклу локальної розробки за рахунок автоматичного відстеження змін у вихідному коді та миттєвої їх передачі всередину запущеного контейнера. Виснажлива необхідність постійно перезбирати образ при кожній зміні одного рядка коду залишилася в минулому, оскільки інструмент вміє працювати в режимі реального часу.

Для налаштування цієї функціональності необхідно відредагувати файл конфігурації docker-compose.yml, додавши спеціальну секцію watch для кожного сервісу, який ви хочете розробляти в інтерактивному режимі. У цій секції ви вказуєте шляхи до локальних файлів, які потрібно моніторити, а також стратегію поведінки при виявленні змін.

Існує кілька основних стратегій синхронизації, які можна налаштувати під потреби конкретного технологічного стеку:

Режим sync просто копіює змінені файли з хост-машини всередину робочої директорії запущеного контейнера без перезапуску процесу, що ідеально підходить для інтерпретованих мов, таких як JavaScript, PHP або Python.
Режим rebuild автоматично запускає повну перезбірку Docker-образу та перезапускає контейнер, якщо зміни торкнулися конфігураційних файлів, залежностей або файлів збірки, таких як package.json або requirements.txt.
Режим sync+restart виконує копіювання файлів і перезапускає конкретний процес всередині контейнера, що корисно для додатків, які вимагають перезавантаження рантайму при оновленні вихідного коду на компільованих мовах.

Щоб запустити моніторинг у терміналі, достатньо виконати стандартну команду docker compose watch. Інструмент підключиться до демона і почне виводити логи синхронизації, дозволяючи вам писати код улюбленому редакторі та бачити результати змін у браузері або консолі практично миттєво, поєднуючи зручність локальної розробки з ізоляцією середовища контейнерів.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем