Java 在Docker中构建Maven项目时,所有目标文件都是根文件
我有一个Maven项目,我想在Docker容器中构建它,这样我就不必安装Java、Maven。。。在我的詹金斯系统上 我构建Maven项目如下:Java 在Docker中构建Maven项目时,所有目标文件都是根文件,java,maven,docker,Java,Maven,Docker,我有一个Maven项目,我想在Docker容器中构建它,这样我就不必安装Java、Maven。。。在我的詹金斯系统上 我构建Maven项目如下: docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v $(pwd):/opt/maven -w /opt/maven 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
这很好,构建是正确的。但是,作为我的普通用户执行此操作时,target/
目录中的所有文件都归root
所有,不归我的当前用户jester
所有
有没有一种简单的方法可以解决这个问题?您可以查看选项-u,as,它将docker run包装在脚本中:
#!/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。docker守护进程以root用户身份运行。这意味着当它在文件系统中写入文件时,这些文件归root所有。