【问题标题】:`docker-compose build` not finding file or directory after COPY`docker-compose build`在复制后找不到文件或目录
【发布时间】:2021-01-28 21:43:16
【问题描述】:

docker-compose build --no-cache 失败并出现此错误:

 ---> Running in f62172d2e9f9
Removing intermediate container f62172d2e9f9
 ---> db5896c4aac5
Step 10/16 : COPY ./rclone/install.sh /data/rclone/
 ---> e659d60665cf
Step 11/16 : COPY ./rclone.conf /root/.config/rclone/rclone.conf
 ---> 61e3b9107870
Step 12/16 : RUN chmod +x ./rclone/install.sh
 ---> Running in 9c5eead9141b
Removing intermediate container 9c5eead9141b
 ---> 42fefac58542
Step 13/16 : RUN ./rclone/install.sh
 ---> Running in fbadefae8a57
': No such file or directory
ERROR: Service 'api' failed to build : The command '/bin/sh -c ./rclone/install.sh' returned a non-zero code: 127

这是 Dockerfile:

FROM node:10.22-alpine3.11

RUN apk update
RUN apk add --no-cache curl
RUN apk add --no-cache bash
RUN apk add --update python make g++\
   && rm -rf /var/cache/apk/*


RUN npm install pm2 -g
RUN apk add --update python make g++\
   && rm -rf /var/cache/apk/*
RUN apk add nginx


WORKDIR /data

COPY ./rclone/install.sh /data/rclone/

COPY ./rclone.conf /root/.config/rclone/rclone.conf

RUN chmod +x ./rclone/install.sh
RUN ./rclone/install.sh

COPY . /data/project/NodeApp

RUN chmod +x /data/project/NodeApp/scripts/.supervisor.sh

CMD /data/project/NodeApp/scripts/.supervisor.sh

关于导致此问题的原因以及如何解决此问题的任何想法? rclone 位于根文件夹中。我已经查看了之前回答的有关 docker-compose not working 的问题,并且研究了这个问题,但没有找到太多相关信息。

任何建议都会很棒!提前致谢。

【问题讨论】:

  • 根据你的 Dockerfile /data 是根目录
  • @MargachChris,对,但它没有被复制到/data 中吗?我最近才开始接触 bash 命令。
  • 这个看起来很奇怪的错误消息通常表明文件已被复制到 DOS 行结尾。你能检查文件是否有 Unix 行结尾吗?
  • chmod +x ./rclone/install.sh 命令成功,所以这向我表明./rclone/install.sh 是一个有效路径。 No such file or directory 错误可能来自 install.sh 脚本正在运行的某些东西。尝试将set -x 添加到install.sh 的开头,以确认脚本是否实际运行,以及脚本可能失败的位置。您还可以通过在您的 chmod 命令之后运行 ls -l ./rclone/install.sh 来确认脚本是否存在。
  • @DavidMaze 行尾是\n\r\n

标签: linux bash docker docker-compose


【解决方案1】:

@DavidMaze 帮我解决了这个问题。 \r 行尾出现错误,因为从 GitHub 下载文件时已转换为 DOS。运行dos2unix 解决了这个问题,我们添加了.gitattributes 以便不再转换行尾。更多解决方案请见Are shell scripts sensitive to encoding and line endings?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多