Saya mencoba menerapkan pipa CI / CD untuk proyek saya menggunakan Docker, Kubernetes dan Jenkins. Aplikasi saya adalah aplikasi multi-penyewa di mana variabel aplikasi database semuanya berbeda untuk penyewa yang berbeda.
Strategi Aplikasi
Ketika saya membangun gambar buruh pelabuhan saya menggunakan Dockerfile. Dan saya menyimpan Dockerfile saya di dalam repositori kode SVN saya. Untuk setiap penyewa, repositori kode sama. Ketika saya membangun gambar, pada saat itu saya perlu membuat gambar yang berbeda untuk penyewa yang berbeda.
Implementasi Dockerfile
Dalam file buruh pelabuhan saya, saya menambahkan titik masuk seperti berikut,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Jika saya perlu membuat gambar Docker untuk penyewa lain, perlu menambahkan
-Dspring.profiles.active=tenant2config
Jadi titik masuk di Dockerfile dinamis.
Kebingungan saya
- Untuk mengelola perintah titik masuk di dalam Dockerfile dimungkinkan secara dinamis?
- Atau Apakah saya perlu menambahkan Dockerfile lain untuk penyewa lain? Dan perlu menjalankan buruh bangunan membangun perintah secara terpisah untuk penyewa terpisah?
Bagaimana saya bisa menemukan cara standar yang baik untuk implementasi masalah ini?
ENTRYPOINT
ie Anda... -Dspring.profiles.active=${TENANT}
lalu mengatur lingkungan yang benar selama penyebaran Anda.