Я пытаюсь реализовать конвейер CI / CD для моего проекта, используя Docker, Kubernetes и Jenkins. Мое приложение является мультитенантным, в котором переменные приложения базы данных различны для разных арендаторов.
Прикладная стратегия
Когда я создаю образ докера, я использую Dockerfile. И я храню свой Dockerfile в своем хранилище кода SVN. Для каждого арендатора хранилище кода одинаково. Когда я создаю образ, тогда мне нужно создавать разные образы для разных арендаторов.
Реализация Dockerfile
В моем файле Docker я добавляю точку входа, подобную следующей,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Если мне нужно создать образ Docker длядругому арендатору необходимо добавить
-Dspring.profiles.active=tenant2config
Таким образом, точка входа в Dockerfile является динамической.
My Confusion
- Для управления точкой входа команда внутри Dockerfile возможна динамически?
- Или мне нужно добавить другой Dockerfile для другого арендатора? И нужно ли запускать команду сборки docker отдельно для отдельного арендатора?
Как мне найти хороший стандартный способ реализации этой проблемы?