You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DockerFile与docker-compose在Windows运行报错:找不到wsgi-entrypoint.sh

解决Windows下Docker执行exec /app/wsgi-entrypoint.sh: no such file or directory错误

核心原因

Linux和Windows文本文件的换行符格式存在差异:Windows默认用CRLF,而Linux容器使用LF。如果你的wsgi-entrypoint.sh是在Windows环境下创建或编辑的,换行符会是CRLF,容器执行脚本时会把CR字符当成命令路径的一部分,导致命令解析失败;另外脚本可能缺少执行权限,也会触发类似报错。

解决方案

1. 修正脚本换行符为Unix格式

打开wsgi-entrypoint.sh,将换行符从CRLF改为LF:

  • VS Code:点击右下角状态栏的CRLF选项,选择LF后保存文件。
  • Notepad++:菜单栏「编辑」→「文档格式转换」→「转换为UNIX格式」。

2. 在Dockerfile中添加脚本执行权限

修改Dockerfile,在ADD . ${APP_ROOT}之后增加一行,赋予脚本执行权限:

FROM python:3.10.1

ENV APP_ROOT /app
ENV CONFIG_ROOT /config

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir ${CONFIG_ROOT}
COPY requirements.txt ${CONFIG_ROOT}/requirements.txt
COPY firebase.json ${CONFIG_ROOT}/firebase.json
RUN pip install -r ${CONFIG_ROOT}/requirements.txt
RUN python -m spacy download en_core_web_sm

RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}

ADD . ${APP_ROOT}
# 新增:赋予脚本执行权限
RUN chmod +x ${APP_ROOT}/wsgi-entrypoint.sh

3. 优化entrypoint写法(可选)

将docker-compose.yml中web服务的entrypoint改为数组格式,避免shell解析歧义:

web:
  # 其他配置保持不变
  entrypoint: ["/app/wsgi-entrypoint.sh"]
  command: ["gunicorn", "--workers=2", "--bind=0.0.0.0:8000", "picard.wsgi:application"]

4. 验证Docker Desktop文件共享(可选)

确保Docker Desktop已开启项目所在盘符的文件共享:

  • 打开Docker Desktop设置 → 资源 → 文件共享,勾选项目所在的盘符(如C盘),应用设置并重启Docker。

内容的提问来源于stack exchange,提问作者Omega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:27:01