Docker, Kubernetes ve Jenkins kullanarak projem için CI / CD boru hattını uygulamaya çalışıyorum. Uygulamam, veritabanı uygulaması değişkenlerinin farklı kiracı için her şeyin farklı olduğu çok kiracılı bir uygulamadır.
Uygulama Stratejisi
Bir docker görüntüsü oluştururken bir Dockerfile kullanıyorum. Dockerfile'ımı SVN kod depomun içinde tutuyorum. Her kiracı için kod deposu aynıdır. Bir görüntü oluştururken, o zaman farklı kiracı için farklı görüntüler oluşturmam gerekiyor.
Dockerfile uygulaması
Docker dosyama aşağıdaki gibi bir giriş noktası ekliyorum,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Başka bir kiracı için Docker resmi oluşturmam gerekirse,
-Dspring.profiles.active=tenant2config
Dockerfile içindeki giriş noktası dinamiktir.
Karışıklık
- Dockerfile içindeki giriş noktası komutunu yönetmek için dinamik olarak mümkün mü?
- Veya başka bir kiracı için başka bir Dockerfile eklemem gerekir mi? Ve ayrı kiracı için docker build komutunu ayrı olarak çalıştırmanız mı gerekiyor?
Bu sorunun nasıl uygulanacağının standart bir yolunu nasıl bulabilirim?
ENTRYPOINT
yani sunucunuzda kullanabilirsiniz,... -Dspring.profiles.active=${TENANT}
ardından dağıtımlarınız sırasında doğru ortamı ayarlayabilirsiniz.