Я намагаюся реалізувати трубопровід CI / CD для свого проекту за допомогою Докера, Кубернетеса та Дженкінса. Моя програма - це багатокористувацька програма, у якій змінні програми додатків баз даних для різних орендарів все різні.
Стратегія застосування
Коли я будую зображення докера, я використовую Dockerfile. І я зберігаю свій Dockerfile у своєму сховищі SVN-коду. Для кожного орендаря сховище коду однакове. Коли я будую зображення, мені потрібно будувати різні зображення для різних орендарів.
Реалізація докерфайлу
У свій файл докера я додаю точку входу, як описано нижче,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Якщо мені потрібно створити зображення Докера для іншого орендаря, потрібно додати
-Dspring.profiles.active=tenant2config
Тож точка входу в Dockerfile є динамічною.
Моя плутанина
- Для управління командою точки введення всередині Dockerfile можливо динамічно?
- Або мені потрібно додати ще один Dockerfile для іншого орендаря? І потрібно запустити команду docker build окремо для окремого орендаря?
Як я можу знайти хороший стандартний спосіб реалізації цієї проблеми?
ENTRYPOINT
тобто... -Dspring.profiles.active=${TENANT}
встановити правильне середовище під час розгортання.