Windows环境下CapRover部署时找不到docker-entrypoint.sh问题求助
解决Windows下CapRover部署Rails项目出现
docker-entrypoint.sh: not found的问题 核心原因
Windows系统默认换行符是CRLF(\r\n),而Linux容器仅识别LF(\n)换行符。你从git拉取项目时,git默认会将LF转换为CRLF,导致docker-entrypoint.sh脚本的换行符变成CRLF,容器内执行脚本时会把\r当成文件名的一部分,实际查找的是docker-entrypoint.sh\r,因此提示找不到文件。
不修改项目文件的临时解决方案
1. 临时调整当前项目的git换行符设置
在项目根目录的终端中执行以下命令,禁用git的自动换行符转换:
git config core.autocrlf false
接着重置当前分支,确保脚本文件以LF换行符存储:
git reset --hard HEAD
之后再执行CapRover部署命令:
caprover deploy
部署完成后,若需恢复原有git设置,执行:
git config core.autocrlf true
2. 通过WSL(Windows子系统Linux)执行部署
利用WSL的Linux兼容环境避免换行符问题:
- 打开WSL终端,进入你的Rails项目目录
- 确保WSL中已安装git和CapRover客户端
- 直接在WSL中执行:
caprover deploy
3. 临时转换脚本换行符(本地仅部署用)
如果没有WSL,可临时转换docker-entrypoint.sh的换行符:
- 使用
dos2unix工具(若已安装):
dos2unix docker-entrypoint.sh
- 或用Notepad++:打开脚本后,点击「编辑」→「文档格式转换」→「转为UNIX格式」,保存后再执行部署。部署完成后无需恢复,下次拉取git会自动转回CRLF(若你之前的git设置是默认的)。
内容的提问来源于stack exchange,提问作者op_exchanger
相关产品推荐
相关产品推荐

