我正在构建一个包含gradle的docker镜像,以及用于测试应用程序的其他工具。
所以,我已经创建了一个基于公司docker图像的新Dockerfile,其中包含我需要的工具之一,然后在keeganwitt的帮助下绑定了gradle。
我的运行命令如下所示:
docker run -it --mount source=~/app-repo/appName,target=/home/gradle/,type=bind app_unittests:gradle_sahi /bin/bash -c "whoami;pwd;chown --recursive gradle:gradle /home/gradle; gradle test --tests test.automation.tools.TestSahi --debug --stacktrace"
所以这个工作,它开始运行,最终我得到:
创建目录'/ home / gradle / out / classes / java / main时无法创建父目录'/ home / gradle / out'
另请注意,我将chown命令添加到我的docker run命令(从gradle dockerfile中解除) - 但它也会遇到所有问题的权限问题......
我还检查了docker inspect <CONTAINER_ID>
:
"Mounts": [
{
"Type": "bind",
"Source": "/root/app-repo/appName",
"Destination": "/home/gradle",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "66dcb821f5687c55821ec908ea7ad041065477fa9328cd5cd47e21cf7d7a0028",
"Source": "/var/lib/docker/volumes/66dcb821f5687c55821ec908ea7ad041065477fa9328cd5cd47e21cf7d7a0028/_data",
"Destination": "/home/gradle/.gradle",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
以及HostConfig下的Mounts:
"Mounts": [
{
"Type": "bind",
"Source": "/root/app-repo/appName",
"Target": "/home/gradle/"
}
]
你可以看到,它是安装RW:true
。
请帮忙..
你应该运行ls -n /root/app-repo/appName
(在源头上)。如果id不是1000
,则需要chown目录(sudo chown -R 1000:1000 /root/app-repo/appName
)或以root身份运行容器(在Docker compose文件中运行docker run --user root
或user: root
)。