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

Ubuntu22.04下Docker-Compose配置Django+MySQL遇安装错误求助

解决Docker中安装mysqlclient时mysql_config not found的问题

问题根源

mysqlclient是基于C扩展的Python库,编译安装时必须依赖MySQL开发工具包(包含mysql_config工具)。你使用的python:3.8-slim-buster是轻量镜像,默认未预装这些系统级依赖,导致编译安装失败。

解决方案

修改Dockerfile,在安装Python依赖前先安装MySQL开发相关的系统包,同时升级pip到指定版本:

修改后的Dockerfile:

FROM python:3.8-slim-buster

ENV PYTHONUNBUFFERED=1

WORKDIR /app

# 安装mysqlclient编译所需的系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    default-libmysqlclient-dev \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

# 升级pip到指定版本
RUN pip3 install --upgrade pip==22.3.1

COPY requirements.txt requirements.txt

RUN pip3 install -r requirements.txt 

额外优化建议

  • 清理冗余依赖:apt-get install添加--no-install-recommends参数,安装后清理/var/lib/apt/lists/*可大幅减小镜像体积。
  • 移除无用驱动:你的requirements.txt同时包含PostgreSQL驱动psycopg2-binary和MySQL驱动mysqlclient,若仅使用MySQL,建议删除psycopg2-binary>=2.9这一行,避免安装不必要的包。
  • 统一路径配置:docker-compose.yml中app服务的挂载路径是.:/django,但Dockerfile的工作目录是/app,路径不一致会导致代码加载异常。建议统一路径,比如将Dockerfile的WORKDIR改为/django,或修改volumes为.:/app。

调整后的docker-compose.yml(统一路径示例):

version: "3.8"
services:
  app:
    build: .
    volumes:
      - .:/app
    ports:
      - 8000:8000
    image: app:django
    container_name: django_container
    command: python manage.py runserver 0.0.0.0:8000
    depends_on:
      - db 
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'django-app-db'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
    volumes:
      - ./data/mysql/db:/var/lib/mysql

验证步骤

  1. 执行docker-compose build重新构建镜像
  2. 构建成功后执行docker-compose run --rm app django-admin startproject core .初始化Django项目
  3. 启动服务:docker-compose up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:25