2017-11-25 5 views
2

DockerコンテナにビルドしたいMavenプロジェクトがあるので、JenkinsにJava、Mavenをインストールする必要はありませんシステム。私は、次のようMavenプロジェクトをビルドするDockerで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

ドッカーデーモンはrootとして実行されます。これは、ファイルシステムにファイルを書き込むときに、それらがrootによって所有されていることを意味します。 –

答えて

1

あなたちゃんスクリプトでドッキングウィンドウの実行をラップin this gistなどのオプション-u、チェックアウト:

#!/bin/sh 

set -e 
test ":$DEBUG" != :true || set -x 

# set image 
set -- debian:jessie "[email protected]" 

# use current user and its groups at host 
for v in /etc/group /etc/passwd; do 
    [ ! -r "$v" ] || set -- -v $v:$v:ro "[email protected]" 
done 
set -- --user "`id -u`:`id -g`" "[email protected]" 
for g in `id -G`; do 
    set -- --group-add "$g" "[email protected]" 
done 
set -- -v "$HOME":"$HOME" "[email protected]" 

exec docker run --rm -it "[email protected]" 

目標は、コンテナがローカルユーザーの定義をマウントしていることを確認することです、と同じUIDを使用していますが/ gid。

+0

いいです、ありがとうございます。 –

関連する問題