首页 > 解决方案 > Docker 构建失败“chmod:无法访问'/main.sh':没有这样的文件或目录”

问题描述

[这是我在构建命令后得到的错误]

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

这是我的码头文件

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

标签: shelldockerbuilddockerfile

解决方案


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

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

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

cd您可以更新 WORKDIR 的值,而不是在 RUN 命令中:

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

推荐阅读