首先,我在SO(this is the closest post)上找不到答案。
我让EC2运行Ubuntu。首先我安装了Jenkins,然后安装了Docker。 这不是“DonD”。
我的项目有一个Jenkins文件,我正在运行一些docker命令。 它应该使用像gradle这样的docker容器,共享一个卷并构建项目。
最终的.war将在主机文件系统上。
问题是:容器内的gradle无法写入主机的文件夹。
这是我的Jenkins文件(无数尝试之一):
#!/usr/bin/groovy
node {
checkout scm
stage 'Gradle'
sh 'sudo docker run --rm -v "$PWD":/api -w /api gradle gradle clean build --stacktrace'
}
Stacktrace重要的一句话:
Caused by: org.gradle.api.UncheckedIOException: Failed to create parent directory '/api/.gradle' when creating directory '/api/.gradle/4.3/fileHashes'
答案 0 :(得分:0)
解决!
我使用-v
参数登录容器:
$ docker exec -it -v "$PWD":/api -w /api gradle bash
然后我尝试检查当前用户:
$ whoami
# gradle
因此,解决方案是以root身份运行容器:
sh 'docker -u root run --rm -v "$PWD":/api -w /api gradle gradle clean build'
这是容器的根。 Jenkins不需要root访问权限。