为已安装sqlsrv的现有PHP Docker容器添加pdo-mysql扩展求助
问题对应解决方案
方案1:基于现有已配置SQL Server驱动的镜像快速修复
你当前的报错是两个原因导致的:
- docker-compose中同一个服务下配置多个
command字段时,仅最后一个会生效,你写的安装autoconf的命令实际没有执行 - 官方PHP基础镜像默认没有携带扩展编译所需的工具链,除了autoconf外还缺少make、gcc、g++等依赖
直接修改docker-compose.yaml中MageAPIDev服务的配置,替换原有command字段即可:
command: /bin/sh -c "apt-get update && apt-get install -y autoconf make gcc g++ && docker-php-ext-install pdo pdo_mysql && apache2-foreground"
如果想要固化修改避免每次启动都安装依赖,可以在容器启动并完成扩展安装后,执行docker commit MageAPIDev mc_test:v3将当前容器打包为新镜像,后续直接使用mc_test:v3镜像即可。
方案2:稳定版PHP8+Apache双驱动Dockerfile
如果需要长期复用环境,推荐直接使用以下Dockerfile构建标准镜像,避免依赖丢失、配置不可追溯的问题:
FROM php:8.1-apache-buster # 安装系统基础依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ gnupg2 \ ca-certificates \ curl \ unixodbc-dev \ autoconf \ make \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # 安装SQL Server官方驱动 RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \ && apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17 \ && rm -rf /var/lib/apt/lists/* # 安装PHP扩展 RUN pecl install sqlsrv pdo_sqlsrv \ && docker-php-ext-enable sqlsrv pdo_sqlsrv \ && docker-php-ext-install pdo pdo_mysql # 开启Apache重写模块(适配Magento等PHP程序,可选) RUN a2enmod rewrite
执行docker build -t php81-apache-sqlsrv-mysql .即可完成镜像构建,内置sqlsrv、pdo_sqlsrv、pdo_mysql所有所需扩展。
内容的提问来源于stack exchange,提问作者Dave Hon
相关产品推荐
相关产品推荐

