Docker容器报错文件不存在但实际存在的问题求助
问题排查与解决建议
1. 检查脚本换行符格式
Windows环境默认用CRLF换行,而Linux容器仅识别LF换行。如果run.sh的换行符是CRLF,容器执行时会把#!/bin/sh\r当成完整命令路径,直接导致找不到文件。
- 用VS Code等编辑器打开
run.sh,将右下角的换行符切换为LF后保存; - 或在WSL/git bash中执行
dos2unix docker/deployment/folder/scripts/run.sh完成格式转换。
2. 确认脚本执行权限
即便能查看文件内容,若脚本没有执行权限,Docker也会抛出类似错误。
- 本地执行
chmod +x docker/deployment/folder/scripts/run.sh,之后重新构建镜像; - 或在Dockerfile中添加
RUN chmod +x /app/docker/deployment/folder/scripts/run.sh,确保容器内脚本权限正确。
3. 验证路径大小写一致性
Windows文件系统大小写不敏感,但Linux容器严格区分大小写。检查Compose文件中引用的路径与实际文件的大小写是否完全匹配(比如Deployment和deployment会被容器判定为不同路径)。
4. 清理Docker缓存重新构建
迁移后本地文件已更新,但Docker可能复用了旧镜像缓存,导致容器内的文件并未同步更新。
- 执行
docker-compose build --no-cache强制重新构建镜像,再启动容器。
内容的提问来源于stack exchange,提问作者Antonio Faria
相关产品推荐
相关产品推荐

