У вас є 3 способи отримання секретів для програми всередині докерного контейнера. Перші 2 включають конфігурацію докера. Останнє - це, щоб ваші програми безпосередньо отримували секрети з секретного магазину.
1 - змінні середовища
Відповідно до посібника "Додаток 12 Фактор" , секрети просто налаштовані, і їх завжди слід встановлювати в оточенні. Ви можете встановити свої секрети як змінні середовища під час запуску докера, а ваша програма звертається до них звідти.
2 - змонтовані обсяги
Ви можете мати свої секрети у певному файлі конфігурації / секретів, а потім змонтуйте їх до свого примірника як змонтований том .
3 - Витяг із секретного магазину
Як згадувалося @ 030, ви можете використовувати Hashicorp Vault (або "Менеджер секретів Amazon", або будь-яку подібну службу).
Ваш додаток або додаткова коляска може безпосередньо отримувати необхідні йому секрети, не маючи справу з будь-якою конфігурацією контейнера Docker. Цей метод дозволить вам використовувати динамічно створені секрети (дуже приваблива особливість таких систем) і не турбуватися про перегляд секретів у файловій системі або перевірку змінних env контейнера докера.
Особиста думка
Я вважаю, що змінні env - це шлях. Це простіше в управлінні, і ви все одно можете витягнути з таємного магазину на зразок Hashicorp Vault, якщо у вас є система побудови CI, витягуйте секрети під час збирання та встановлюйте їх під час розгортання. Ви отримуєте найкраще з обох світів, і додаткова перевага вашим розробникам не потребує написання коду програми для отримання секретів. Розробники повинні бути зосереджені на їх функціональності коду, а не на таких адміністративних завданнях, як отримання паролів.
Код вашої програми має бути зосереджений на власній функціональності додатка, а не на вирішенні завдань, таких як отримання паролів. Так само, як і 12 додатків фактора.
Редагувати: змінив останнє речення, щоб видалити значення програми для Developer vs SysAdmin. Самі завдання повинні бути окремими з точки зору коду, але DevOps - це приблизно ті самі особи, які мають на увазі і не повинні бути обмеженими.
Особиста думка (оновлення)
Відмінний коментар Пер @ Дірка ( Передача секретів до контейнера Docker ), є дуже сильний аргумент, щоб надати пріоритет секретному магазину над ENV vars, через те, що він не бажає їх витікати.