我正在尝试执行一个docker-compose文件中的命令
services:
jar-build:
image: myImage
working_dir: /opt/build
volumes:
- "../:/opt/build/"
command: "./gradlew build"
运行docker-compose -f aboveFile.yaml run jar-build
返回
执行/gradlew:没有这样的文件或目录
但是如果我将命令更改为简单的ls
services:
jar-build:
image: myImage
working_dir: /opt/build
volumes:
- "../:/opt/build/"
command: "ls"
我得到
Dockerfile
build.gradle
docker
gradle
gradle.properties
gradlew
gradlew.bat
jfrog.gradle
lombok.config
settings.gradle
src
为什么ls
显示gradlew文件在那里,但它却找不到它?whoami
命令显示我是root
gradlew是一个shell脚本
我使用的是带有git bash的docker for windows,它是一个Linux容器
编辑:gradlew文件的第一行是#!/bin/sh
运行命令echo $SHELL
返回(我没有复制错误)
C:程序文件Gitusrbindash.exe
edit2:gradlew和build.yaml是LF结尾
edit3:我不完全确定我在这里做了什么。我重新克隆了我们的仓库几次,这可能清除了一些缓存。我还运行了git config --global core.autocrlf input
并重新启动,但神秘的错误消失了,现在我只剩下Could not connect to the Gradle daemon.
,这对我来说很糟糕,但不是这个问题的目标。
1条答案
按热度按时间2hh7jdfx1#
我不能再问更多的问题了,但是也许docker守护进程是作为一个不能访问那个文件的用户运行的,如果是这个问题,你可以用
chmod
或者chown
来修复它。此外,鉴于您无法连接到Gradle守护程序,这似乎是一个类似的权限问题。您可能需要root访问权限,或者也需要调整该权限。