Windows环境运行FastAPI Docker Compose时遇exec ./run.sh文件未找到错误
Docker容器执行run.sh提示文件不存在但实际存在的问题
我在跟着FastAPI教程做Docker部署时遇到问题:运行docker compose后,数据库容器正常运行,但Web容器启动后立刻退出,Docker日志显示错误:exec ./run.sh: no such file or directory。
我定位问题可能出在Dockerfile的CMD命令行。我用的是Windows机器,知道这类环境下Docker挂载容易出问题,但不确定是不是这个原因。终端执行命令时没有任何错误或警告,只有Docker Desktop日志显示上述错误。
我找过相关的解决方案帖子,尝试过指定解释器、用sed命令清理文件换行符,也确认仓库里的run.sh已经设置了可执行权限,但这些方法都没用。
为了排查,我在CMD ["./run.sh"]前加了RUN pwd && ls -l命令,确认执行到这一步时容器处于/app目录,且run.sh确实存在并具备执行权限,输出如下:
#14 [10/10] RUN pwd && ls -l #14 0.445 /app #14 0.447 total 112 #14 0.447 drwxr-xr-x 3 root root 4096 Nov 29 14:04 alembic #14 0.447 -rwxr-xr-x 1 root root 1663 Nov 29 14:04 alembic.ini #14 0.447 drwxr-xr-x 11 root root 4096 Nov 29 14:04 app #14 0.447 -rwxr-xr-x 1 root root 83711 Nov 29 14:04 poetry.lock #14 0.447 -rwxr-xr-x 1 root root 345 Nov 29 14:04 prestart.py #14 0.447 -rwxr-xr-x 1 root root 180 Nov 29 14:04 prestart.sh #14 0.447 -rwxr-xr-x 1 root root 641 Nov 29 14:04 pyproject.toml #14 0.447 -rwxr-xr-x 1 root root 708 Nov 29 14:04 run.sh #14 DONE 0.5s #15 exporting to image #15 exporting layers #15 exporting layers 0.8s done #15 writing image sha256:a14684e21dd168ec37696fc64f1d57dbd05a146ff8694cf2fe6fc4a134014500 done #15 DONE 0.8s
现在完全搞不懂明明文件存在且有权限,为什么会提示找不到或无法执行。
内容的提问来源于stack exchange,提问作者Calvin Nisson
相关产品推荐
相关产品推荐

