Как избежать перестройки контейнера при каждом изменении кода при использовании IntelliJ IDEA для локальной разработки службы Cloud Run?

Я новичок в IntelliJ (и Docker), поэтому извините меня, если этот вопрос по своей сути глуп - я чувствую, что что-то упускаю.

Я использую IDEA Ultimate для разработки службы Cloud Run (в node.js), которую нужно собрать как контейнер Docker. Я могу развернуть это локально, что немного быстрее, чем загружать каждую инкрементную сборку в Google, но все равно кажется странным, что мне приходится тратить полторы минуты на пересборку всего контейнера каждый раз, когда я хочу изменить строку кода.

Вне контейнера я мог бы просто сохранить отредактированный исходный файл и перезапустить узел (когда перезапуск даже необходим; большая часть моего приложения представляет собой код на стороне клиента, а узел просто служит статическими файлами). Я чувствую, что как только контейнер Docker существует, IDEA аналогичным образом сможет развертывать обновленные исходные файлы «в» него (и при необходимости перезапускать узел, вероятно, автоматически с помощью nodemon), а не перестраивать все это.

Я рассмотрел настройку привязки Docker для сопоставления папки приложения в контейнере с папкой моего внешнего проекта, но конфигурация запуска IDEA, которую я использую для локального развертывания (Cloud Code:Cloud Run:Run Locally), не кажется чтобы предоставить любое поле для предоставления дополнительных аргументов для запуска Docker. Docker Target и Docker Environment присутствуют, но другие параметры, которые появляются в конфигурации запуска Docker:Dockerfile, включая монтирование привязки, недоступны.

Я попытался создать фиктивную конфигурацию Docker:Dockerfile с указанным монтированием привязки, затем скопировал соответствующую из сохраненной XML-копии в конфигурацию Cloud Run, но это не дало видимых эффектов (это было немного далековато, учитывая Я понятия не имею, как анализируется XML).

Между тем, я также немного озадачен тем, что когда я захожу в контейнер Docker через терминал, код приложения недоступен в указанном месте файловой системы (как WORKDIR) в файле Dockerfile (то есть /usr/src/). app) — этой папки даже не существует; файлы существуют в контейнере, но только в папках overlay2 Docker. Вероятно, это отражает мое грубое понимание того, как работает Docker, но похоже, что это может мешать установке привязки к этому месту.

Конфигурация запуска Cloud Run на самом деле начинается с запуска Minikube, поэтому, прочитав еще немного, я начинаю задаваться вопросом, действительно ли мне нужно не монтирование привязки Docker, а директива синхронизации файлов скаффолда. Похоже, что это должно быть в skaffold.yaml, но его нет; на основе результатов сборки Cloud Code создает временный файл для конфигурации скаффолда.

Было бы полезно узнать, что делает конкретная конфигурация запуска «под капотом» — возможно, тогда я мог бы создать полностью пользовательскую конфигурацию, повторяющую то, что делает конфигурация Cloud Run:Run Locally, но с дополнительным шагом добавления привязки и / или правило синхронизации файлов.

Неужели я лаю не на то дерево? Есть ли гораздо более простой способ добиться этого?

0 ответов

Другие вопросы по тегам