如果在 Windows 上使用 Docker Desktop 要注意换行符问题. Windows 文本换行符使用 CRLF, 所以 git 默认会将 clone 下来的二进制文件的 LF 换行符全部转换为 CRLF, push 的时候再转换为 LF. 但基于本地 Linux 虚拟机的 Docker Desktop 在进行构建的时候不会转换换行符, 导致默认使用 CRLF 的二进制文件在容器运行时还是 CRLF, 一些脚本就会因为换行符问题无法运行, 于是会出现这样的神奇问题:
/usr/local # ls
memos   run.sh
/usr/local # ./run.sh
/bin/sh: ./run.sh: not found

在终端里使用文本编辑器打开脚本就能很容易看到使用 CRLF 导致的问题.

----------------------
CRLF - MDN Web 文档术语表:Web 相关术语的定义 | MDN
----------------------

#Windows #Linux #Docker

via CXPLAY's Memos
 
 
Back to Top