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

Docker中Django runserver无法运行,MySQL连接问题求助

Django容器化连接MySQL启动失败的解决方案

一、补充系统级MySQL依赖

Python的mysqlclient依赖系统级的MySQL客户端库,你的Docker镜像里缺少这些依赖,会导致依赖安装失败或启动时无法连接MySQL。修改Dockerfile,添加依赖安装步骤:

FROM python:3.9
ENV PYTHONUNBUFFERED=1
# 安装MySQL客户端编译依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    default-libmysqlclient-dev \
    build-essential \
    && rm -rf /var/lib/apt/lists/*
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY . /app/
# 添加默认启动命令
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

二、修正数据库连接配置

检查settings.py里的数据库配置,重点确认以下几点:

  • HOST:如果MySQL是Docker Compose部署的服务,填写服务名称(比如mysql);如果是本地主机的MySQL,Linux/macOS用host.docker.internal,Windows用主机IP或localhost
  • NAME:确保这个数据库已经在MySQL中创建(Django不会自动创建数据库)
  • USER/PASSWORD/PORT:和MySQL的实际配置完全匹配

示例正确配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_project_db',
        'USER': 'db_user',
        'PASSWORD': 'db_password',
        'HOST': 'mysql',  # 对应Docker Compose中的服务名
        'PORT': '3306',
    }
}

三、确保MySQL服务就绪后再启动Django

如果用Docker Compose编排服务,添加健康检查让Django等待MySQL启动完成,避免因数据库未就绪导致连接失败:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      - DB_HOST=mysql
      - DB_NAME=your_project_db
      - DB_USER=db_user
      - DB_PASSWORD=db_password
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_DATABASE=your_project_db
      - MYSQL_USER=db_user
      - MYSQL_PASSWORD=db_password
      - MYSQL_ROOT_PASSWORD=root_pwd
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

四、确认依赖清单包含mysqlclient

检查requirements.txt,确保添加了MySQL驱动依赖:

django>=3.2
mysqlclient>=2.1.0
# 其他项目依赖...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:24:35