gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:40:05 27 4
gpt4 key购买 nike

我有一个 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 所有,这是我的当前用户。

有没有简单的方法可以解决这个问题?

最佳答案

您可以查看选项 -u,如 in this gist ,它将 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。

关于java - 在Docker中构建Maven项目时,所有目标文件都是root的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com