shell - 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
解决方案
当您在 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
推荐阅读
- sql - 计数为零的项目列表不存在
- java - nosql数据库中的多个子句,如firebase
- javascript - 在 {{/if}} 中打开一个 div,稍后用流星/火焰关闭它
- cloud-foundry - 如何获取云代工服务使用情况
- vue.js - vuelidate 验证对象作为道具传递
- jmeter - 以非 gui 模式运行 jmeter,为 groovy 脚本发送参数,如何?
- xml - 使用 XDocument 解析 XML - vb.net
- here-api - Here Fleet Telematics Toll Costs Api 中用于成本计算的车辆重量参数中可能存在错误
- html - 在 CSS 网格中定位框项目的问题
- r - geom_candlestick 没有在自己的数据上按应有的方式绘制编辑:将 POSIXct 转换为日期