не удалось найти ошибку драйвера в приложении Lumen 5.6 (работает в Docker + Alpine Linux + Nginx + PHP-Fpm 7.2) - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь добавить доступ к базе данных для моего приложения Lumen 5.6, которое в настоящее время выполняется в докере в следующем стеке LEMP:

  • Alpine Linux
  • PHP-FPM 7.2.x
  • NGINX

Мой составной файл выглядит так:

version: '2.1'

services:

  webhooks-mysql:
    container_name: webhooks-mysql
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: webhooks
      MYSQL_USER: webhooks
      MYSQL_PASSWORD: 123456
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    ports:
    - "33401:3306"

  webhooks-service:
    container_name: webhooks-service
    depends_on:
      webhooks-mysql:
        condition: service_healthy
    build: .
    mem_limit: 64M
    ports:
      - "9050:80"
    volumes:
      - ./:/app:cached

, и у меня в .env:

APP_NAME=webhooks
APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:123456=
APP_TIMEZONE=UTC

DB_CONNECTION=mysql
DB_HOST=webhooks-mysql
DB_DATABASE=webhooks
DB_USERNAME=webhooks
DB_PASSWORD=123456
* 1017 есть следующее*И наконец;мой контейнер имеет все необходимые зависимости:
php7 php7-fpm php7-mysqli php7-pdo php7-openssl php7-mbstring
php7-xml php7-tokenizer php7-json php7-openssl php7-curl php7-zlib 
php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype 
php7-mbstring php7-gd php7-zip git nginx supervisor curl zip unzip

и следующие пакеты компоновщика:

  "require": {
    "php": ">=7.1.3",
    "laravel/lumen-framework": "5.6.*",
    "vlucas/phpdotenv": "~2.2",
    "wikimedia/ip-set": "^1.2",
    "doctrine/dbal": "^2.8"
  }

Когда я пытаюсь запустить миграцию внутри контейнера, я получаю следующую ошибку:

/ app # php artisan migrate

В строке 664 Connection.php: не удалось найти драйвер (SQL: выбрать * из information_schema.tables, где table_schema = webhooks и table_name =)

В строке 50 файла PDOConnection.php: не удалось найти драйвер

Есть идеи, почему я получаю эту ошибку?

Я уже проверил php-mysql/ pdo расширения загружены, значения env правильны и т. д. Я не могу понять это.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я исправил проблему с помощью следующего Dockerfile :

FROM php:7.2-fpm-alpine

# Install packages
RUN docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql \
 && apk add --update \
    ca-certificates \
    curl \
    git \
    zip \
    unzip \
    nano \
 && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
 && rm -rf /var/cache/apk/*

# Configure php-fpm
COPY scripts/fpm-pool.conf /etc/php7/php-fpm.d/zzz_custom.conf
COPY scripts/php.ini /usr/local/etc/php/conf.d/zzz_custom.ini

# Add Application
WORKDIR /app
ADD . /app
0 голосов
/ 29 ноября 2018

Поскольку образ докера полностью удален, существует больше зависимостей, чем вы могли ожидать, я столкнулся с той же проблемой и исправил ее, добавив расширение pdo_mysql в дополнение к уже имеющимся (pdo, * 1003).* и mbstring).

...