在Docker中构buildMaven项目时,所有目标文件都是根源的

我有一个Maven项目,我想在Docker容器中构build,这样我就不必在我的Jenkins系统上安装Java,Maven …。

我构build的Maven项目如下:

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v $(pwd):/opt/maven -w /opt/maven maven mvn clean install 

这工作很好,构build是正确的。 但是,以普通用户身份执行此操作时, target/目录中的所有文件都由root拥有,而不是由jester (目前用户)拥有。

有一个简单的方法来解决这个问题吗?

您可以查看-u选项,就像在这个要求中包含docker在脚本中运行一样:

 #!/bin/sh set -e test ":$DEBUG" != :true || set -x # set image set -- debian:jessie "$@" # use current user and its groups at host for v in /etc/group /etc/passwd; do [ ! -r "$v" ] || set -- -v $v:$v:ro "$@" done set -- --user "`id -u`:`id -g`" "$@" for g in `id -G`; do set -- --group-add "$g" "$@" done set -- -v "$HOME":"$HOME" "$@" exec docker run --rm -it "$@" 

目标是确保容器安装本地用户定义,并使用相同的uid / gid。