Cara kami melakukannya adalah kami memiliki 3 buah (atau artefak) untuk setiap aplikasi yang berjalan.
- Aplikasi yang kami kembangkan. Ini sama terlepas dari lingkungan. Untuk mencocokkan contoh Anda, itu akan menjadi aplikasi Musim Semi sebagai toples / perang.
- Wadah yang akan menjalankan aplikasi. Ini sama terlepas dari lingkungan. Jika menggunakan Spring Boot, Anda tidak perlu Tomcat lagi dan hanya Java runtime. Jadi gunakan wadah Dockj openjdk.
- Konfigurasi yang dibutuhkan aplikasi. Ini adalah satu-satunya hal yang berbeda di seluruh lingkungan. Di aplikasi Musim Semi, Anda kemungkinan akan menggunakan file properti.
File konfigurasi tinggal di kontrol sumber terpisah. Ini dulunya adalah Git, tetapi kami sekarang menggunakan SaaS yang kami buat bernama Config, di http://www.configapp.com . Fitur inti Config adalah penanganan mudah konfigurasi khusus lingkungan. Untuk menjalankan aplikasi kami di server baru, kami menarik wadah Docker, artefak aplikasi, dan file konfigurasi untuk lingkungan itu. Dalam wadah, kami memasang direktori tempat aplikasi dan file konfigurasi disimpan, sebagai bagian dari wadah dijalankan. Aplikasi kita sama. Wadah / gambar kami sama. Hanya file konfigurasi yang berbeda.
Mengenai variabel konfigurasi file vs lingkungan. Untuk waktu yang lama kami menggunakan file konfigurasi. Ketika kami menggunakan PaaS / cloud, kami menggunakan variabel lingkungan. Itu pekerjaan tambahan jika Anda memiliki banyak konfigurasi sehingga kami akhirnya menggunakan variabel lingkungan untuk menentukan file konfigurasi yang benar. Kami memiliki satu aplikasi yang mengubah properti menjadi variabel lingkungan, tetapi itu tidak biasa. Jika kami memiliki server konfigurasi terpusat yang disetujui perusahaan, kami menggunakannya, jika tidak, kami menyukai kesederhanaan file konfigurasi.
Jadi untuk meringkas, kita tarik app.jar, app.properties, openjdk Docker. Kemudian kita jalankan openjdk Docker yang memasang lokasi app.jar dan app.properties. Satu-satunya hal spesifik lingkungan adalah app.properties. Untuk mengelola app.properties dengan mudah, terlepas dari berapa banyak kunci properti, lingkungan, instance cluster / wilayah, kami menggunakan Config.