Docker Build Failed“ chmod:无法访问'/main.sh':没有这样的文件或目录”

时间:2018-10-25 10:25:04

标签: shell docker build dockerfile

[这是在生成命令后出现的错误]

Step 7/9 : RUN chmod +x /main.sh
 ---> Running in 6e880a009c7d

chmod: cannot access '/main.sh': No such file or directory
The command '/bin/sh -c chmod +x /main.sh' returned a non-zero code: 1

这是我的docker文件

FROM centos:latest

MAINTAINER Aditya Gupta

#install git 

RUN yum -y update
RUN yum -y install git

#make git repo folder, change GIT_LOCATION
RUN mkdir -p /home/centos/doimages/dockimg;cd /home/centos/doimages/dockimg;
RUN git clone https://(username):(password)@gitlab.com/abc/xyz.git (foldername);cd (foldername)/


Run chmod +x ./main.sh

 RUN echo " ./main.sh\n "

 EXPOSE Portnumber

3 个答案:

答案 0 :(得分:0)

您想要执行一个docker计算机上不存在的shell文件。使用ADD命令将您的脚本添加到您的Docker映像中!

-- somewehe inside your dockerfile befor the execution ---
ADD ./PATH/ON/HOST/main.sh /PATH/YOU/LIKE/ON/DOCKER/MACHINE

然后尝试构建您的docker计算机

答案 1 :(得分:0)

当您在Dockerfile中执行RUN步骤时,将启动一个临时容器,通常使用shell来解析您的命令。该命令完成后,容器退出,docker将文件系统打包为映像层。对于每个RUN行,将从头开始重复该过程。

关键是外壳退出,丢失您设置的环境变量,运行的后台进程,在这种情况下,是您尝试在此处设置的当前工作目录:

RUN git clone https://(username):(password)@gitlab.com/abc/xyz.git (foldername);cd (foldername)/

可以代替RUN命令中的cd,来更新WORKDIR的值:

RUN git clone https://(username):(password)@gitlab.com/abc/xyz.git (foldername)
WORKDIR foldername

答案 2 :(得分:0)

问题通过workdir解决,无需克隆文件即可手动克隆,然后在dockerfile中提供mainsh的路径。