Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Docker中构建Maven项目时,所有目标文件都是根文件_Java_Maven_Docker - Fatal编程技术网

Java 在Docker中构建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

我有一个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
                    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所有。