代码之家  ›  专栏  ›  技术社区  ›  0leg

Dockerfile:尝试运行shell脚本时的代码127

  •  0
  • 0leg  · 技术社区  · 7 年前

    Docker工具箱 在…上 Windows 10主机

    有一个 Dockerfile文件

    FROM 16.04
    ...
    RUN if [ some_condition ]; then ./foo.sh; fi
    ...
    

    有一个 foo.sh :

    #!/bin/bash
    ...
    echo 'Me working'
    

    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中, Dockerfile文件

    FROM ubuntu:16.04
    MAINTAINER Mr Anderson "mr@anderson.com"
    
    # set workdir
    COPY . /app
    WORKDIR /app
    
    # Run scripts
    RUN ./foo.sh
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Shawn K    7 年前

    在执行/运行脚本之前,需要将文件复制到容器中。

    此外,由于在调用脚本时使用的是相对路径,因此请确保设置WORKDIR。

    COPY ./foo.sh /app/foo.sh
    WORKDIR /dir
    RUN chmod +x /app/foo.sh
    RUN if [ some_condition ]; then ./foo.sh; fi
    

    还要确保脚本是可执行的。

        2
  •  1
  •   0leg    7 年前

    就我而言,解决方案是:

    • 打开 ./foo.sh :set fileformat=unix

    长话短说:shell脚本中结束的行不正确,必须转换为Unix脚本。