Как автоматически извлекать артефакты сборки из контейнера docker, сохраняя право собственности на вызывающий процесс? - PullRequest
0 голосов
/ 19 июня 2020

Я пишу несколько сценариев автоматической сборки, которые используют контейнер docker в качестве среды сборки.

Одна вещь, которая меня беспокоит, - это найти способ извлечь артефакты сборки из контейнера и сохранить владение пользователем вызывающего процесса.

Обычно это происходит автоматически; когда процесс создает файл, файл принадлежит пользователю, запускающему процесс. Но когда процесс вызывает контейнер docker, контейнер запускается от имени другого пользователя (часто root). Я не вижу простого способа запустить контейнер от имени того же пользователя, что и вызывающий процесс. Поэтому, если я сопоставляю локальный каталог при вызове docker (docker run --volume $(pwd)/target:/target), тогда, когда сценарий сборки в изображении записывает его файлы, они появятся в каталоге сборки хоста, принадлежащем root.

Другая альтернатива, которую я вижу, - запустить контейнер, дождаться его завершения, а затем использовать docker cp для извлечения артефактов сборки. Проблема в том, что я не вижу способа запустить контейнер до завершения и затем получить идентификатор контейнера для недавно созданного контейнера.

Есть ли общий способ автоматически / программно извлечь артефакты сборки из контейнера docker, сохраняя право собственности на вызывающий процесс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...