在Docker中构建Maven项目时,所有目标文件都是root

时间:2017-11-25 08:53:30

标签: java maven docker

我有一个Maven项目,我想在Docker容器中构建,所以我不需要在我的Jenkins系统上安装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则不属于我当前的用户。

有一种简单的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

你查看选项-u,作为in this gist,它包含了脚本运行在脚本中:

#!/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。