ElisDN / demo-project-manager

Demo project for Symfony workshop

Home Page:https://elisdn.ru/project-manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

An exception occurred in driver: could not find driver

kafkiansky opened this issue · comments

Здравствуйте! Использую вашу сборку, только вместо postgres хочу подключить mysql. Написал следующие docker-файлы:

php-fpm.docker

FROM php:7.2-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install mcrypt pdo_mysql

WORKDIR /app

php-cli.docker

FROM php:7.2-cli

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install mcrypt pdo_mysql pcntl

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin --filename=composer --quiet

ENV COMPOSER_ALLOW_SUPERUSER 1

WORKDIR /app

В docker-compose.yml добавил образ mysql:

engine-mysql:
    image: mysql:5.7
    restart: always
    environment:
      - "MYSQL_ROOT_PASSWORD=xx"
      - "MYSQL_USER=user"
      - "MYSQL_PASSWORD=xx"
      - "MYSQL_DATABASE=db"
     ports:
        - "3306:3306"

При попытке выполнения следующих двух команд возникает ошибка, которую указал в заголовке:

docker-compose exec php-fpm bash &&
php bin/console doctrine:database:create

Подскажите, что может быть не так?

Верните настройки в config/packages/doctrine.yaml:

doctrine:
    dbal:
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'

и в .env:

DATABASE_URL=mysql://user:xx@manager-mysql:3306/db

@ElisDN, так эти настройки и так на месте, я их не трогал. В .env файле все тоже так, как вы показали. При этом при попытке создать базу выскакивает такая ошибка.

Запускайте одной командой в контейнере:

docker-compose run --rm php-cli php bin/console doctrine:database:create

@ElisDN, уже что-то:

 Access denied for user 'app'@'172.19.0.4' (using password: YES)

Почему акссесс-денайд, если конфиг в .env правильный?

У Вас "MYSQL_USER=user", а не app.

@ElisDN, нет, конфиги я специально указал другие. Хотя при build возникает такая ошибка.

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
ERROR: Service 'proglib-engine-php-fpm' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y libmcrypt-dev mysql-client     && docker-php-ext-install mcrypt pdo_mysql' returned a non-zero code: 1

Она может быть виной?

@ElisDN, все, спасибо большое вам, ошибка решилась.