Запустите Maven в контейнере Docker через текущего пользователя - PullRequest
0 голосов
/ 12 октября 2018

Я хочу запустить 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 (который не существует, как ожидается) на хосте.Где они?Что я делаю не так?

1 Ответ

0 голосов
/ 12 октября 2018

Здесь описывается, как запускать maven от имени пользователя без полномочий root:

Maven требует, чтобы пользователь загружал домой артефакты, и если пользователь не существует визображение должно быть установлено дополнительное свойство Java user.home.

Что-то в этом направлении должно работать:

docker run -it --rm \
  --user $(id -u):$(id -g) \
  -v ~/.m2:/var/maven/.m2:rw \
  -e MAVEN_CONFIG=/var/maven/.m2 \
  -v $PWD:$PWD:rw \
  -w $PWD \
  maven:alpine \
  mvn -Duser.home=/var/maven "$@"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...