我有一个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
则不属于我当前的用户。
有一种简单的方法可以解决这个问题吗?
答案 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。