Nodejs Skaffold местное развитие в процессе производства
Новое в контейнерах и кубернетес.
Я пытаюсь все настроить, чтобы у нас был паритет местного развития на всем протяжении прод.
Скаффолд, кажется, хороший способ сделать это, но меня смущают несколько небольших фрагментов примеров и "идеальный рабочий процесс"
Ссылки https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs
Предоставляемый ими докер-файл использует nodemon. Разве этот же контейнер не будет использоваться в Prod? Разве не плохо было бы запускать nodemon в prod?
Как настроить локальную среду разработки Kubernetes с синхронизацией файлов в реальном времени и использовать те же ресурсы (для обеспечения идемпотентности) для производства?
0 ответов
Ты абсолютно прав. Не рекомендуется использовать nodemon в производственном контейнере. Вместо этого вам обычно нужны разные изображения или разные точки входа для разработки, подготовки и производства. Есть два варианта решения этой проблемы:
1. Несколько файлов Docker.
Вы можете настроить профили в Skaffold и указать Skaffold использовать другой файл Docker на этапе сборки: https://skaffold.dev/docs/how-tos/profiles/
2. Единый файл Dockerfile + переопределения разработчика.
Если вы не хотите управлять несколькими файлами Dockerfile, вы можете использовать инструмент разработки, который поддерживает переопределения разработчика. DevSpace (https://github.com/devspace-cloud/devspace), например, различаетdevspace deploy
а также devspace dev
который применяет определенные переопределения, например переопределение точки входа изображения. В этом случае вы можете указать 2 сценария npm в своем package.json и запустить режим разработки с точкой входаnpm start dev
и режим производства с использованием npm start
.