在我的 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
我有两个问题,因为我不明白为什么会发生这个错误:
/bin/sh
即使在脚本中声明了/bin/bash
?当 Windows 上的 Git 配置为将行结尾更改为 CR-LF 而不是 Linux LF 标准时,经常会发生这种情况。这会将脚本的解释器从
/bin/bash
更改为 /bin/bash\r
。调整 Git 配置以保留代码中的行结尾以避免此问题。