2017-11-13 7 views
0

まず、SO(this is the closest post)で答えを見つけることができませんでした。ドッカーコンテナはホストに書き込めません

私はEC2にUbuntuを実行しています。まず、JenkinsとDockerをインストールしました。 「DonD」ではありません。

私のプロジェクトには、いくつかのドッカーコマンドが実行されているという点で、Jenkinsfileがあります。 これは、gradleのようなドッカーコンテナを使用してボリュームを共有し、プロジェクトをビルドすることになっています。

最後の.warはホストファイルシステム上にあります。

問題は:コンテナ内のグラデーションがホストのフォルダに書き込めないことです。

ここに私のJenkinsfile(無数の試みの1つ)です:

#!/usr/bin/groovy 

node { 
    checkout scm 
    stage 'Gradle' 

    sh 'sudo docker run --rm -v "$PWD":/api -w /api gradle gradle clean build --stacktrace' 
} 

スタックトレース重要な行:解決

Caused by: org.gradle.api.UncheckedIOException: Failed to create parent directory '/api/.gradle' when creating directory '/api/.gradle/4.3/fileHashes' 
+1

変数$ PWDに格納されているディレクトリに、そのディレクトリへの書き込みを許可する正しいアクセス権が設定されていることを確認しましたか? – xangxiong

+0

Jenkinsユーザー:はい。私はジェンキンのユーザーをsudoersのリストに入れました。 – Falci

答えて

0

$ whoami 
# gradle 

ので、解決策は、ルートとしてコンテナを実行することです:

その後
$ docker exec -it -v "$PWD":/api -w /api gradle bash 

私は、現在のユーザーをチェックしてみました:

私は-v引数を使用してコンテナにログイン

sh 'docker -u root run --rm -v "$PWD":/api -w /api gradle gradle clean build' 

これはコンテナのルートです。 Jenkinsはrootアクセスを必要としません。

関連する問題