Dockerfile RUN 命令抛出错误,但在不同的机器上它工作正常

问题描述 投票:0回答:1

在我的 Dockerfile 中有一个像这样的 RUN 命令:

FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu20.04
...
RUN ./my_script.sh

脚本中的第一行是

#!/bin/bash
。我的同事能够毫无问题地构建映像,他们的操作系统是 Linux Ubuntu 22.04。我在 Windows 11 上使用 WSL2 (Ubuntu 22.04) 使用
docker compose build
构建映像,但出现以下错误:

ERROR [application 10/11] RUN ./my_script.sh 
0.426 /bin/sh: 1: ./my_script.sh: not found

我有两个问题,因为我不明白为什么会发生这个错误:

  1. 为什么 RUN 命令在不同的机器上表现不同?容器操作系统是一样的,RUN命令在容器内部运行,对吧?
  2. 为什么错误报告
    /bin/sh
    即使在脚本中声明了
    /bin/bash
bash docker docker-compose dockerfile
1个回答
0
投票

当 Windows 上的 Git 配置为将行结尾更改为 CR-LF 而不是 Linux LF 标准时,经常会发生这种情况。这会将脚本的解释器从

/bin/bash
更改为
/bin/bash\r
。调整 Git 配置以保留代码中的行结尾以避免此问题。

© www.soinside.com 2019 - 2024. All rights reserved.