#node.js #kubernetes #skaffold
#node.js #kubernetes #skaffold
Вопрос:
Новое в container и kubernetes.
Я пытаюсь настроить все так, чтобы у нас был паритет локальной разработки на всем пути через prod.
Skaffold кажется хорошим способом сделать это, но меня смущают несколько небольших фрагментов примеров и «идеальный рабочий процесс»
Ссылка https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs
Файл dockerfile, который они предоставляют, использует nodemon. Разве этот же контейнер не использовался бы в prod? Разве было бы плохо запускать nodemon в prod?
Как мне настроить локальную среду разработки kubernetes с синхронизацией файлов в реальном времени и использовать те же ресурсы (для обеспечения идемпотентности) для производства?
Комментарии:
1. Вероятно, вам следует открыть это как проблему в этом репозитории. 🙂 Похоже, пример недостаточно ясен.
Ответ №1:
Вы абсолютно правы. Использование nodemon в производственном контейнере не рекомендуется. Вместо этого обычно требуются разные изображения или разные точки входа для разработки, промежуточной разработки и производства. Есть два варианта решения этой проблемы:
1. Несколько файлов Dockerfile
Вы можете настроить профили в Skaffold и указать Skaffold использовать другой файл Dockerfile на этапе сборки:https://skaffold.dev/docs/how-tos/profiles
2. Один Dockerfile Dev переопределяет
Если вы не хотите управлять несколькими файлами Dockerfile, вы могли бы использовать инструмент разработки, который поддерживает переопределения dev. Пространство разработки (https://github.com/devspace-cloud/devspace ) например, различает devspace deploy
и devspace dev
, которые применяют определенные переопределения, например, переопределение точки входа в изображение. В этом случае вы могли бы указать 2 скрипта npm в вашем package.json и запустить режим разработки с использованием точки входа npm start dev
и производственного режима npm start
.