Dockerfile:尝试运行shell脚本时的代码127
在Windows 10主机上运行Docker Toolbox 有一个Dockerfile:Dockerfile:尝试运行shell脚本时的代码127,shell,docker,Shell,Docker,在Windows 10主机上运行Docker Toolbox 有一个Dockerfile: FROM 16.04 ... RUN if [ some_condition ]; then ./foo.sh; fi ... #!/bin/bash ... echo 'Me working' FROM ubuntu:16.04 MAINTAINER Mr Anderson "mr@anderson.com" # set workdir COPY . /app WORKDIR /app # Ru
FROM 16.04
...
RUN if [ some_condition ]; then ./foo.sh; fi
...
#!/bin/bash
...
echo 'Me working'
FROM ubuntu:16.04
MAINTAINER Mr Anderson "mr@anderson.com"
# set workdir
COPY . /app
WORKDIR /app
# Run scripts
RUN ./foo.sh
有一个foo.sh:
FROM 16.04
...
RUN if [ some_condition ]; then ./foo.sh; fi
...
#!/bin/bash
...
echo 'Me working'
FROM ubuntu:16.04
MAINTAINER Mr Anderson "mr@anderson.com"
# set workdir
COPY . /app
WORKDIR /app
# Run scripts
RUN ./foo.sh
现在,在尝试构建Docker映像时:
docker build -t name_of_the_image .
获取错误:
Step 7/12 : RUN ./foo.sh
---> Running in e7e0703d3f8f
/bin/sh: 1: ./foo.sh: not found
The command '/bin/sh -c ./foo.sh' returned a non-zero code: 127
我假设错误127将是Docker没有看到bash。有什么建议可以解决这个问题吗
编辑:已将所有文件复制到Docker中,Dockerfile:
FROM 16.04
...
RUN if [ some_condition ]; then ./foo.sh; fi
...
#!/bin/bash
...
echo 'Me working'
FROM ubuntu:16.04
MAINTAINER Mr Anderson "mr@anderson.com"
# set workdir
COPY . /app
WORKDIR /app
# Run scripts
RUN ./foo.sh
在执行/运行脚本之前,需要将文件复制/复制到容器中 此外,由于在调用脚本时使用的是相对路径,因此请确保设置WORKDIR
COPY ./foo.sh /app/foo.sh
WORKDIR /dir
RUN chmod +x /app/foo.sh
RUN if [ some_condition ]; then ./foo.sh; fi
还要确保脚本是可执行的。在执行/运行脚本之前,需要将文件复制/复制到容器中 此外,由于在调用脚本时使用的是相对路径,因此请确保设置WORKDIR
COPY ./foo.sh /app/foo.sh
WORKDIR /dir
RUN chmod +x /app/foo.sh
RUN if [ some_condition ]; then ./foo.sh; fi
还要确保脚本是可执行的。进一步调查后:
- 由于这些命令的工作方式,使用cmdoverrun并不是一个完美的解决方案。RUN可以用于任意次数,以逐层构建Docker映像,而CMD只能在构建映像后执行一次
- 用VIM打开
文件,运行:/foo.sh
并保存文件:设置fileformat=unix
长话短说:shell脚本结尾的行不正确,必须转换为Unix行。经过进一步调查:
- 由于这些命令的工作方式,使用cmdoverrun并不是一个完美的解决方案。RUN可以用于任意次数,以逐层构建Docker映像,而CMD只能在构建映像后执行一次
- 用VIM打开
文件,运行:/foo.sh
并保存文件:设置fileformat=unix
长话短说:shell脚本结尾的行不正确,必须转换为Unix脚本。好主意。不幸的是,情况并非如此-已经使用
COPY将所有文件复制到docker/应用程序
。哈哈,很好,我删除了那条评论,很高兴你在它消失之前看到了它。。。但很高兴这起了作用。玩得开心!好主意。不幸的是,情况并非如此-已经使用COPY将所有文件复制到docker/应用程序
。哈哈,很好,我删除了那条评论,很高兴你在它消失之前看到了它。。。但很高兴这起了作用。玩得开心!哇,这原来也是我的问题。花了很多时间寻找答案,结果发现是行尾。。。。欢迎来到在Windows机器上运行docker的世界。哇,这也是我的问题。花了很多时间寻找答案,结果发现是行尾。。。。欢迎来到在Windows机器上运行docker的世界。