[这是在生成命令后出现的错误]
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
答案 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的路径。