当gradle尝试写入out目录时,Docker镜像中的权限问题

问题描述 投票:0回答:1

我正在构建一个包含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

请帮忙..

docker gradle dockerfile
1个回答
1
投票

你应该运行ls -n /root/app-repo/appName(在源头上)。如果id不是1000,则需要chown目录(sudo chown -R 1000:1000 /root/app-repo/appName)或以root身份运行容器(在Docker compose文件中运行docker run --user rootuser: root)。

© www.soinside.com 2019 - 2024. All rights reserved.