Я хочу запустить Maven, чтобы построить проект в контейнере Docker.Сначала я придумал:
docker run -it --rm
-v $HOME/.m2:/root/.m2:rw
-v $PWD:$PWD:rw
-w $PWD
maven:alpine
mvn "$@"
Это прекрасно работает, но проблема в том, что все файлы теперь написаны и принадлежат пользователю root
.Я хочу, чтобы они принадлежали текущему пользователю, сам.
Итак, я попробовал это:
docker run -it --rm
--user $(id -u):$(id -g)
-v $HOME/.m2:/root/.m2:rw
-v $PWD:$PWD:rw
-w $PWD
maven:alpine
mvn "$@"
Это не сработало, как ожидалось.Я полагаю, я знаю почему: теперь с --user $(id -u):$(id -g)
мы действительно выполняем как я, но теперь отображение -v $HOME/.m2:/root/.m2:rw
становится неверным, /root
больше не существует.
Итак, давайте попробуем это:
docker run -it --rm
--user $(id -u):$(id -g)
-v $HOME:$HOME:rw
-v $PWD:$PWD:rw
-w $PWD
maven:alpine
mvn "$@"
Теперь я получаю следующее предупреждение:
Can not write to /root/.m2/copy_reference_file.log. Wrong volume permissions? Carrying on ...
Кроме того, Maven, кажется, может строить (хотя явозникли проблемы с доступом к демону Docker во время интеграционных тестов, но это может быть лучше для другого вопроса), но я не вижу никаких артефактов, появляющихся в ~/.m2/repository
на хосте?Их также нет в /root/.m2/repository
(который не существует, как ожидается) на хосте.Где они?Что я делаю не так?