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

Codeigniter3 Dockerfile部署报错:无法定位msodbcsql17包

解决 "Unable to locate package msodbcsql17" 问题

问题出在你使用的php:7.4-apache镜像基于Debian 11 (bullseye),但你添加的是Debian 10 (buster)的Microsoft软件源,导致apt无法找到对应版本的msodbcsql17包。

以下是修正后的Dockerfile:

# Use an official PHP runtime as a parent image
FROM php:7.4-apache

# Install system dependencies + Microsoft SQL Server prerequisites
RUN apt-get update && apt-get install -y --no-install-recommends \
        libonig-dev \
        libxml2-dev \
        unixodbc-dev \
        gnupg2 \
        curl \
    && docker-php-ext-install mbstring xml pdo pdo_mysql \
    # Add Microsoft GPG key and correct Debian 11 repository
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y --no-install-recommends \
        msodbcsql17 \
        mssql-tools \
    # Set PATH globally (works for all shell sessions)
    && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' > /etc/profile.d/mssql-tools.sh \
    && chmod +x /etc/profile.d/mssql-tools.sh \
    # Install PHP SQL Server extensions
    && pecl install pdo_sqlsrv sqlsrv \
    && docker-php-ext-enable pdo_sqlsrv sqlsrv \
    # Clean up to reduce image size
    && apt-get purge -y --auto-remove curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Set the working directory in the container
WORKDIR /var/www/html

# Copy the current directory contents into the container
COPY . /var/www/html/

# Grant permissions and enable Apache rewrite module
RUN chown -R www-data:www-data /var/www/html \
    && a2enmod rewrite

# Expose port 80
EXPOSE 80

# Start Apache server
CMD ["apache2-foreground"]

关键修改说明:

  • 替换Microsoft软件源:将debian/10改为debian/11,匹配基础镜像的Debian版本
  • 全局设置PATH:将PATH配置写入/etc/profile.d/mssql-tools.sh,确保所有shell(包括非交互式shell)都能识别mssql-tools的命令
  • 优化镜像大小:合并RUN步骤,使用--no-install-recommends减少不必要的依赖,安装完成后清理无用包和apt缓存
  • 调整依赖安装顺序:确保curl在需要时可用,避免重复安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:08:18