docker-compose找不到文件,即使ls可以看到它

c2e8gylq  于 2023-01-29  发布在  Docker
关注(0)|答案(1)|浏览(248)
    • bounty将在2天后过期**。回答此问题可获得+50声望奖励。moondc希望引起更多人关注此问题。

我正在尝试执行一个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.,这对我来说很糟糕,但不是这个问题的目标。

2hh7jdfx

2hh7jdfx1#

我不能再问更多的问题了,但是也许docker守护进程是作为一个不能访问那个文件的用户运行的,如果是这个问题,你可以用chmod或者chown来修复它。
此外,鉴于您无法连接到Gradle守护程序,这似乎是一个类似的权限问题。您可能需要root访问权限,或者也需要调整该权限。

相关问题