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

Docker部署Django API遇pyodbc驱动找不到错误求助

解决Docker容器中pyodbc连接SQL Server驱动缺失问题

问题根源

  • Windows本地环境用的SQL Server驱动是Windows专属命名,Linux容器环境需要安装微软官方提供的Linux版ODBC驱动,且驱动命名规则不同(比如ODBC Driver 18 for SQL Server)
  • 默认的Python Docker镜像没预装SQL Server ODBC驱动和unixODBC依赖组件

1. 修改Dockerfile,安装系统依赖与驱动

基于Python基础镜像,添加驱动安装步骤,示例如下:

# 选用Python slim镜像作为基础
FROM python:3.11-slim

WORKDIR /app

# 安装unixODBC及辅助工具
RUN apt-get update && apt-get install -y --no-install-recommends \
    unixodbc \
    unixodbc-dev \
    curl \
    gnupg \
    && rm -rf /var/lib/apt/lists/*

# 添加微软官方源的GPG密钥与源配置
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/12/prod.list > /etc/apt/sources.list.d/mssql-release.list

# 安装ODBC Driver 18(也可选择17版本,按需调整)
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql18 \
    && rm -rf /var/lib/apt/lists/*

# 安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制项目代码
COPY . .

# 启动Django服务(根据项目实际启动命令调整)
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

2. 修正odbcinst.ini配置

将配置中的驱动名称改为Linux环境下的实际驱动名,示例:

[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
UsageCount=1

如果安装的是17版本,驱动名称改为ODBC Driver 17 for SQL Server,对应驱动路径为/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1

3. 调整Django数据库连接配置

把数据库连接的driver参数改成和odbcinst.ini一致的名称,示例:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': '你的数据库名',
        'USER': '数据库账号',
        'PASSWORD': '数据库密码',
        'HOST': 'SQL Server地址',
        'PORT': '1433',
        'OPTIONS': {
            'driver': 'ODBC Driver 18 for SQL Server',
            # 测试环境可添加此行禁用证书验证
            # 'extra_params': 'TrustServerCertificate=yes'
        },
    }
}

4. 重新构建并验证

  • 重新构建镜像:docker build -t your-api-image .
  • 启动容器:docker run -p 8000:8000 your-api-image

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:45:01