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

Docker环境运行Laravel 8执行migrate提示mysql找不到驱动问题问询

根因分析
  • Dockerfile中GD扩展配置使用了PHP 7的废弃参数,PHP 8环境下该步骤执行失败,导致后续的PDO MySQL扩展安装流程中断,扩展未实际编译安装到镜像中
  • 未预先安装PHP扩展依赖的系统库,直接执行docker-php-ext-install也会导致扩展安装失败
  • 若未使用--no-cache参数重新构建镜像,修改后的Dockerfile不会生效,仍会使用存在问题的旧镜像缓存
  • 若直接在宿主机执行artisan migrate命令,调用的是宿主机的PHP环境而非容器内的PHP,也会触发驱动找不到的报错
解决方案

步骤1:修正Dockerfile配置

适配PHP 8的扩展安装规则,先安装系统依赖再安装PHP扩展,修正GD配置参数,修正后的参考配置:

# 指定PHP 8版本,避免latest标签版本漂移
FROM php:8.0-fpm

# 安装扩展依赖的系统库
RUN apt-get update && apt-get install -y \
    default-mysql-client \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev \
    zip \
    unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 安装PHP扩展
RUN docker-php-ext-install mysqli pdo pdo_mysql mbstring zip exif pcntl
# PHP 8下GD扩展配置使用新参数,移除废弃的--with-gd、xx-dir参数
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd

# 设置工作目录
WORKDIR /var/www

# 复制项目文件(放到扩展安装之后,避免代码修改导致镜像缓存失效每次都重装扩展)
COPY composer.lock composer.json /var/www/
COPY . /var/www

# 权限配置
RUN chown -R www-data:www-data . \
    && find . -type f -exec chmod 664 {} \; \
    && find . -type d -exec chmod 775 {} \; \
    && chgrp -R www-data storage bootstrap/cache \
    && chmod -R ug+rwx storage bootstrap/cache

EXPOSE 9000

步骤2:无缓存重新构建镜像

执行命令清理旧容器并重新构建镜像,避免缓存影响:

docker compose down
docker compose build --no-cache

步骤3:启动容器并验证扩展

启动服务后进入容器验证PDO MySQL扩展是否安装成功:

docker compose up -d
# 进入app容器验证扩展
docker compose exec app php -m | grep pdo_mysql

输出pdo_mysql即代表扩展安装成功。

步骤4:正确执行migrate命令

必须在容器内执行artisan命令,禁止直接在宿主机执行:

docker compose exec app php artisan migrate
其他可选优化
  • MySQL服务的自定义配置挂载路径错误,官方MySQL镜像配置默认读取/etc/mysql/conf.d/路径下的.cnf文件,可将挂载规则修改为./docker/sqldb/db.cnf:/etc/mysql/conf.d/db.cnf保证配置生效
  • 无需在local.ini中手动添加extension=pdo_mysql.so,docker-php-ext-install安装扩展后会自动生成ini配置文件启用扩展

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 06:45:03