Anda memiliki 3 metode untuk mendapatkan rahasia aplikasi di dalam wadah buruh pelabuhan. 2 yang pertama melibatkan konfigurasi buruh pelabuhan. Yang terakhir adalah meminta aplikasi Anda secara langsung mengambil rahasia dari toko rahasia.
1 - Variabel lingkungan
Menurut panduan "The 12 Factor App" , rahasia hanyalah konfigurasi, dan mereka harus selalu diatur di lingkungan. Anda bisa mengatur rahasia Anda sebagai variabel lingkungan selama menjalankan buruh pelabuhan, dan aplikasi Anda mengaksesnya dari sana.
2 - Volume yang dipasang
Anda dapat memiliki semua rahasia Anda dalam konfigurasi / file rahasia tertentu, kemudian pasang itu ke instance Anda sebagai volume yang dipasang .
3 - Ambil dari toko rahasia
Seperti yang disebutkan @ 030, Anda dapat menggunakan Hashicorp Vault (atau "Amazon Secrets Manager", atau layanan apa pun seperti itu).
Aplikasi Anda, atau aplikasi sespan dapat mengambil rahasia yang dibutuhkan secara langsung, tanpa harus berurusan dengan konfigurasi apa pun pada wadah Docker. Metode ini akan memungkinkan Anda untuk menggunakan rahasia yang dibuat secara dinamis (fitur yang sangat menarik dari sistem tersebut) dan tanpa harus khawatir tentang rahasia yang dapat dilihat dari sistem file atau dari memeriksa variabel env dari wadah buruh pelabuhan.
Opini pribadi
Saya percaya variabel env adalah cara untuk pergi. Lebih mudah untuk mengelola, dan Anda masih dapat menarik dari toko rahasia seperti Hashicorp Vault, jika Anda memiliki CI Anda membangun sistem menarik rahasia selama membangun dan mengaturnya ketika Anda menyebarkan. Anda mendapatkan yang terbaik dari kedua dunia, dan manfaat tambahan dari pengembang Anda tidak perlu menulis kode aplikasi untuk mengambil rahasia. Pengembang harus fokus pada fungsi kode mereka, dan tidak berurusan dengan tugas admin seperti mengambil kata sandi.
Kode aplikasi Anda harus difokuskan pada fungsi aplikasi itu sendiri, dan tidak berurusan dengan tugas-tugas backend seperti mengambil kata sandi. Sama seperti 12 App faktor menyatakan.
Sunting: mengubah kalimat terakhir untuk menghapus implikasi silo-ing Pengembang vs SysAdmin. Tugas itu sendiri harus terpisah dari perspektif kode, tetapi DevOps adalah tentang orang yang sama mengingat dan tidak dibatasi.
Opini Pribadi (Pembaruan)
Per @ Dirk berkomentar luar biasa ( Melewati rahasia ke wadah Docker ), ada argumen yang sangat kuat untuk memprioritaskan toko rahasia di atas ENV vars, karena tidak ingin membocorkannya.