在Windows 10主机上运行Docker工具箱。
有一个Dockerfile
FROM 16.04
...
RUN if [ some_condition ]; then ./foo.sh; fi
...有一个foo.sh
#!/bin/bash
...
echo 'Me working'现在,当试图构建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 ubuntu:16.04
MAINTAINER Mr Anderson "mr@anderson.com"
# set workdir
COPY . /app
WORKDIR /app
# Run scripts
RUN ./foo.sh发布于 2017-07-26 12:19:31
经进一步调查后:
就我而言,解决办法是:
./foo.sh文件并运行::set fileformat=unix并保存该文件。长话短说:以shell脚本结尾的行不正确,必须转换为Unix。
发布于 2017-07-26 11:11:51
在执行/运行脚本之前,需要将文件复制/复制到容器中。
另外,由于在调用脚本时使用的是相对路径,所以一定要设置WORKDIR。
COPY ./foo.sh /app/foo.sh
WORKDIR /dir
RUN chmod +x /app/foo.sh
RUN if [ some_condition ]; then ./foo.sh; fi还要确保脚本是可执行的。
https://stackoverflow.com/questions/45325165
复制相似问题