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

Windows11下用Docker+uWSGI部署Django项目遇启动错误求助

问题排查与解决

核心错误:Docker Run命令参数顺序错误

你当前执行的docker run命令中,端口映射参数-p 8080:80被放在了镜像名djangohw之后,Docker会把这个参数当成要在容器内执行的命令,而-p并不是一个可执行文件,因此抛出错误。

修正后的Docker Run命令

docker run -it --rm -p 8080:80 djangohw

注意:Docker的命令选项(如-p、--rm等)必须放在镜像名称之前,镜像名称之后的内容会被当作容器启动时要执行的命令,覆盖Dockerfile中定义的CMD。

额外优化建议

1. 给start.sh添加可执行权限

Windows系统下创建的shell脚本默认没有可执行权限,容器启动时可能无法运行start.sh。在Dockerfile中添加如下命令:

RUN chmod +x start.sh

修改后的完整Dockerfile:

FROM python:3.9
ENV DEPLOY=1
WORKDIR /opt/tmp
COPY . .
RUN pip install -r requirements.txt
RUN chmod +x start.sh
EXPOSE 80
CMD ["sh", "start.sh"]

2. 固定uwsgi监听端口

当前start.sh中uwsgi使用--http=0.0.0.0:0,这会让uwsgi随机选择端口,和Dockerfile中EXPOSE 80的配置不一致。建议修改为固定端口80,确保端口映射生效:

uwsgi --module=mysite.wsgi:application \
    --env DJANGO_SETTINGS_MODULE=mysite.settings \
    --master \
    --http=0.0.0.0:80 \
    --processes=5 \
    --harakiri=20 \
    --max-requests=5000 \
    --vacuum

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:24:58