J'essaie d'implémenter le pipeline CI / CD pour mon projet en utilisant Docker, Kubernetes et Jenkins. Mon application est une application multi-locataire dans laquelle les variables d'application de base de données sont différentes pour chaque locataire.
Stratégie d'application
Lorsque je crée une image Docker, j'utilise un Dockerfile. Et je garde mon Dockerfile dans mon dépôt de code SVN. Pour chaque locataire, le référentiel de code est le même. Lorsque je crée une image, à ce moment-là, je dois créer différentes images pour différents locataires.
Implémentation de Dockerfile
Dans mon fichier Docker, j'ajoute un point d'entrée comme le suivant,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Si je dois créer une image Docker pour un autre locataire, je dois ajouter
-Dspring.profiles.active=tenant2config
Le point d'entrée dans le Dockerfile est donc dynamique.
Ma confusion
- Pour gérer la commande de point d'entrée à l'intérieur du Dockerfile est possible par dynamiquement?
- Ou dois-je ajouter un autre Dockerfile pour un autre locataire? Et vous devez exécuter la commande docker build séparément pour un locataire distinct?
Comment puis-je trouver un bon moyen standard de mise en œuvre de ce problème?
ENTRYPOINT
IE,... -Dspring.profiles.active=${TENANT}
puis définir l'environnement correct lors de vos déploiements.