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

在Render平台用Dockerfile部署Django应用:release.sh未执行的解决方法

解决Render.com Docker部署Django时release.sh不执行的问题

核心问题原因

用Dockerfile部署Render Web服务时,容器的启动逻辑由Dockerfile中的CMD或ENTRYPOINT定义,而非render.toml的startCommand——后者仅适用于非Docker的Build & Deploy模式(比如直接部署Python项目)。此外你的Dockerfile存在语法错误,且缺少给release.sh赋予执行权限的步骤。

正确实现步骤

1. 修正并完善Dockerfile

移除apt-get命令行末尾多余的!,添加执行权限配置与启动命令:

ARG PYTHON_VERSION=3.10-slim-buster

ARG DEBIAN_FRONTEND=noninteractive

FROM python:${PYTHON_VERSION}

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir -p /code

WORKDIR /code

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    libpq-dev \
    gcc \
    cron \
    wkhtmltopdf \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt /tmp/requirements.txt

RUN set -ex && \
    pip install --upgrade pip && \
    pip install -r /tmp/requirements.txt && \
    rm -rf /root/.cache/

COPY . /code

# 给release.sh赋予执行权限
RUN chmod +x /code/release.sh

# 指定容器启动时执行的命令
CMD ["sh", "/code/release.sh"]

2. 调整render.toml(可选)

Docker部署模式下启动命令由Dockerfile定义,可移除render.toml中的startCommand配置避免冲突:

# 若无需其他部署配置,可删除整个[deploy]块

3. 保持release.sh内容不变

确保release.sh位于项目根目录,内容如下:

#!/usr/bin/env sh
python manage.py migrate
python manage.py collectstatic --noinput
python manage.py runserver 0.0.0.0:$PORT

额外优化建议

生产环境不建议用runserver(仅适用于开发),推荐替换为WSGI服务器如Gunicorn:

  1. 在requirements.txt中添加gunicorn
  2. 修改release.sh的启动命令:
gunicorn your_project_name.wsgi:application --bind 0.0.0.0:$PORT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:52:21