Секрет сборки в Docker
Секрет сборки доступен команде на время шага и не остаётся файлом в готовом образе. Его передают снаружи, а в рецепте указывают только идентификатор монтирования.
Рядом с файлом шагов лежит
token.txt со словом
demo - это учебный
текст, не настоящий пароль.
Образ note копирует
содержимое в обычный файл
на шаге RUN:
FROM alpine
RUN --mount=type=secret,id=token cp /run/secrets/token /note.txt
CMD ["cat", "/note.txt"]
При сборке нужно связать
идентификатор token
с файлом на диске.
Флаг --secret у
docker build задаёт
источник для монтирования.
Сборка с меткой note:
docker build --secret id=token,src=token.txt -t note .
Запуск печатает demo,
потому что шаг скопировал
текст в обычный файл.
Сам секрет по пути
/run/secrets/token
в образ не входит, а скопированный
/note.txt входит.
Проверим вывод:
docker run --rm note
Соберите образ hint, который на одном шаге читает внешний файл key.txt со словом hint и записывает его в /msg.txt для CMD.
После сборки запустите hint и сравните: в готовом образе есть /msg.txt, а исходный секрет по служебному пути отсутствует.