【问题标题】:laravel as a docker-compose service - [QueryException] could not find driverlaravel 作为 docker-compose 服务 - [QueryException] 找不到驱动程序
【发布时间】:2025-12-25 04:10:07
【问题描述】:

我使用这个 dockerfile 为我的 laravel 项目创建了一个容器:

FROM composer:1.8

RUN apk add --no-cache libpng libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev
RUN docker-php-ext-install pdo mbstring gd
RUN docker-php-ext-enable gd

WORKDIR /app
COPY . /app
RUN composer install

CMD php artisan serve --host=0.0.0.0 --port=8181
EXPOSE 8181

然后我尝试将它用作docker-compose.yml 文件中的服务:

version: '3'
services:
  webservice:
    image: private.repo.com/my_user/webservice
    ports:
      - '80:8181'
    depends_on:
      - mariadb
  mariadb:
    image: mariadb
    volumes:
      - './db:/var/lib/mysql'
    environment:
      - MYSQL_ROOT_PASSWORD=some_password
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - mariadb
    ports:
      - '443:80'
    environment:
      - PMA_HOST=mariadb
      - PMA_PORT=3306

现在我想调用我的 API 时收到错误 500。 (错误是 [QueryException] 找不到驱动程序)

我搜索了一下,发现它通常是因为.env文件有问题而发生的

这是我在 laravel 项目中的 .env 文件

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=my_db_name
DB_USERNAME=my_db_user
DB_PASSWORD=my_db_pass

DB_HOST 与我的 docker-compose.yml 文件相同。

我也尝试在我的mariadb 服务中导出端口3306,但它也不起作用

我哪里出错了,请帮忙

-----------更新-----------

我还检查了 mariadb 服务的 ip 并将其放在我的服务容器中(当它们都工作时,没有关闭它们)但问题仍然存在。

【问题讨论】:

  • 您是否尝试过在 docker-compose 中设置 MariaDB 的端口? “端口:-”3306:3306“”?查看laradock.io 以查看一些示例。如果缺少驱动程序,是否在服务中安装了 PHP MariaDB 驱动程序?
  • @Kiksy 是的,正如我在帖子中所说的那样,在我也尝试导出 mariadb 端口之前,它没有帮助

标签: laravel docker docker-compose mariadb dockerfile


【解决方案1】:

其实很简单。

我也必须安装 pdo_mysql

现在我的 docker 文件是这样的:

FROM composer:1.8

RUN apk add --no-cache libpng libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev
RUN docker-php-ext-install pdo mbstring gd pdo_mysql # this line is changed
RUN docker-php-ext-enable gd

WORKDIR /app
COPY . /app
RUN composer install

CMD php artisan serve --host=0.0.0.0 --port=8181
EXPOSE 8181

我在这里找到了解决方案:https://github.com/docker-library/php/issues/62#issuecomment-70306737

【讨论】: