Трансформация разработки с помощью Docker Compose Watch
Как мы создаем, распространяем и запускаем приложения, кардинально изменилось в эпоху Docker. Docker Compose, мощный инструмент для управления многоконтейнерными приложениями Docker, дополнительно усилил это преобразование. Теперь, с введением функции “watch”, целью становится еще большее упрощение процесса разработки.
С включенной функцией “watch”, Docker Compose может автоматически обновлять активные службы, когда вы вносите изменения и сохраняете свой код. Это означает, что службы обновляют себя в реальном времени, по мере вашей работы, что делает процесс разработки еще более эффективным.
Использование функции “Watch”
В Docker Compose атрибут watch устанавливает набор правил для автоматического обновления служб на основе локальных изменений файлов. Каждое правило требует как шаблон пути, так и действие, которое следует выполнить при обнаружении изменения. Для watch доступны два действия: sync и rebuild.
Sync
Когда действие установлено на sync, Docker Compose гарантирует, что любые изменения файлов на вашем хосте немедленно отражаются в соответствующем контейнере службы. Это особенно полезно для фреймворков, поддерживающих “Hot Reload” или подобные функции. Правила sync часто могут заменить bind mounts во многих сценариях разработки, обеспечивая более тонкую степень контроля над отслеживаемыми файлами и директориями.
Rebuild
Когда действие установлено на rebuild, Docker Compose автоматически использует BuildKit для создания нового образа, заменяя текущий контейнер службы. Это поведение идентично выполнению docker compose up --build <svc>
. Это действие идеально подходит для компилируемых языков или изменений в определенных файлах, которые требуют полного пересоздания образа.
Настройка функции “Watch”
Чтобы использовать функцию “watch”, вам нужно включить секции watch для одной или нескольких служб в вашем файле compose.yml. После этого вы можете запустить проект Compose с помощью docker compose up --build --wait
и инициировать режим наблюдения за файлами, выполнив docker compose alpha watch
. Docker Compose затем автоматически обрабатывает обновления в соответствии с вашими настройками watch, когда вы редактируете исходные файлы своих служб.
В этой конфигурации действие sync отслеживает директорию ./web
на вашем хосте. Любые изменения синхронизируются с соответствующей директорией /src/web
в вашем Docker контейнере, за исключением изменений, сделанных в директории node_modules/
.
С другой стороны, действие rebuild отслеживает файл package.json. Если этот файл изменяется каким-либо образом, Docker Compose пересобирает образ и заменяет активный контейнер службы.
После того как вы настроите конфигурацию watch, запустите свой проект Docker Compose, используя docker compose up --build --wait
, затем выполните команду docker compose alpha watch
для активации режима наблюдения за файлами. Docker Compose теперь будет автоматически синхронизировать или пересобирать вашу службу каждый раз, когда вы сохраняете изменение в файле в директории web/
или файле package.json, соответственно.
Этот минимальный пример нацелен на приложение Node.js со следующей структурой:
Следуйте инструкциям на dockersamples/avatars для быстрого запуска небольшого демо-приложения, как показано ниже:
Откройте http://localhost:5735 в вашем браузере.
Заключение
Новая функция “watch” в Docker Compose представляет собой обнадеживающий шаг к более простому и эффективному процессу разработки. Отслеживая ваши файлы и реагируя на изменения, Docker Compose позволяет разработчикам больше сосредоточиться на своем коде, а не на административных задачах построения и синхронизации их Docker-сервисов.
В дополнение к предоставленному примеру на Node.js, этот метод можно применить к другим языкам и фреймворкам. Например, исходные файлы Python для проекта Flask могут быть синхронизированы, а изменение файла requirements.txt вызовет пересборку.
Следуя лучшим практикам, всегда проверяйте, что ваш Dockerfile оптимизирован для быстрых инкрементных пересборок. Этого можно достичь с помощью многостадийных сборок и кэширования слоев образов. Кэширование слоев использует тот факт, что если в слоях вашего Dockerfile не производилось изменений, последующие сборки могут их повторно использовать.
Функция “watch” в Docker Compose определенно облегчает процесс разработки. Эта функция, вместе с постоянными улучшениями, которые Docker регулярно внедряет, помогает увеличить популярность и принятие этого инструмента контейнеризации.
Помните, что гибкость Docker - вот что делает его таким надежным. Это проявляется в функции “watch”, которая предоставляет возможность разработки без участия пользователя, тем самым повышая продуктивность. Будь вы разработчиком маленького приложения или большой распределенной системы, функция “watch” может стать тем решающим фактором, который вам нужен.
Как и с многими инструментами, лучший способ понять функцию “watch” в Docker Compose - это использовать ее. Счастливого кодинга!
Мои курсы
🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить Docker, покорить Kubernetes или углубить свои навыки в области DevOps, мои курсы предлагают структурированный путь к повышению вашего технического мастерства.
Мои услуги
💼 Загляните в мой каталог услуг и узнайте, как мы можем сделать вашу технологическую жизнь лучше. Будь то повышение эффективности вашей IT-инфраструктуры, развитие вашей карьеры или расширение технологических горизонтов — я здесь, чтобы помочь вам достичь ваших целей. От DevOps-трансформаций до сборки игровых компьютеров — давайте сделаем ваши технологии непревзойденными!
Пополнить запасы моего кофе
💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi
Подпишись
⭐ Telegram | Блог
🎬 YouTube
🐦 Twitter
🎨 Instagram
🐘 Mastodon
🧵 Threads
🎸 Facebook
🧊 Bluesky
🎥 TikTok
💻 LinkedIn
📣 daily.dev Squad
🧩 LeetCode
🐈 GitHub
Этот контент создан искусственным интеллектом?
Нет! Каждая статья — результат моей работы, наполненной страстью к Docker и десятилетиями опыта в IT. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.