Windows11下Docker Compose启动MSSQL容器提示entrypoint.sh不存在求助
问题解决:Docker启动时报
exec ./entrypoint.sh: no such file or directory错误 可能原因及修复方案
1. 脚本换行符不兼容(Windows环境高频问题)
Windows系统默认使用CRLF换行格式,而Linux容器仅识别LF格式。若entrypoint.sh是在Windows下创建/编辑的,会导致容器无法正确解析脚本。
- 修复方式:
- 在VS Code等编辑器中打开
entrypoint.sh,点击右下角的「CRLF」切换为「LF」,保存后重新构建镜像。 - 或在Dockerfile中添加转换命令(需root权限):
RUN apt-get update && apt-get install -y dos2unix && dos2unix /usr/config/entrypoint.sh /usr/config/configure-db.sh
- 在VS Code等编辑器中打开
2. 脚本路径匹配问题
Dockerfile中已设置WORKDIR /usr/config,理论上./entrypoint.sh路径有效,但可尝试绝对路径排查:
- 修改ENTRYPOINT为绝对路径:
ENTRYPOINT ["/usr/config/entrypoint.sh"]
3. COPY命令路径验证
确认src/db/目录下确实存在entrypoint.sh,并在Dockerfile中添加验证命令排查文件是否被正确复制:
RUN ls -la /usr/config/ # 查看目录内容,确认entrypoint.sh存在且路径正确
4. 脚本权限强化
虽然已执行chmod +x,可进一步提升权限确保可执行:
RUN chmod 755 /usr/config/entrypoint.sh /usr/config/configure-db.sh
5. 强制重新构建镜像
旧镜像缓存可能导致问题残留,执行强制构建命令:
docker compose build --no-cache mssql_server
内容的提问来源于stack exchange,提问作者ccy
相关产品推荐
相关产品推荐

