本地构建微服务应用时Dockerfile执行./gradlew报错找不到文件
解决
./gradlew: not found 报错的方案 修复gradlew执行权限:在本地项目的
src/adservice目录下执行chmod +x gradlewWindows系统克隆项目时,Linux/Unix的文件执行权限会丢失,导致容器内无法运行脚本,给文件加上可执行权限后再重新运行
skaffold run。验证Dockerfile的文件复制逻辑:检查
src/adservice/Dockerfile中的COPY指令,确保它将本地目录下的所有文件(包括gradlew)完整复制到容器工作目录。正常情况下应该有COPY . .这样的指令,如果路径配置错误,会导致gradlew未被复制到容器内。容器内手动排查:临时修改Dockerfile,在执行
./gradlew的步骤前添加调试命令:RUN ls -la RUN which bash重新构建后查看输出,确认gradlew是否存在、权限是否正确,同时验证容器内是否安装了bash(gradlew脚本开头指定了
#!/bin/bash,部分轻量基础镜像可能仅包含sh,会导致脚本无法正常解析)。重新克隆项目时禁用自动换行符转换:之前使用
core.autocrlf=true会将脚本的换行符转为Windows格式,尝试用以下命令重新克隆:git clone https://github.com/GoogleCloudPlatform/microservices-demo.git --config core.autocrlf=false克隆完成后直接运行
skaffold run,避免换行符格式问题干扰脚本执行。
内容的提问来源于stack exchange,提问作者staticvoid
相关产品推荐
相关产品推荐

