Docker + mysql + php + Symfony, ошибка при подключении к mysql

0

Я пытаюсь настроить мой докер с помощью приложения php (Symfony 3).

Все кажется прекрасным, но Symfony не может подключиться к mysql.

У меня есть ошибка:

Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "Исключение произошло в драйвере: не удалось найти драйвер"

Мой файл docker-compose.yaml:

version: '3'
    services:
      app:
        image: car-rental
        ports: 
          - "8888:80"
        links:
          - php
          - db 
        volumes:
          - ./.code:/var/www/html
        depends_on:
          - db
      php:
        image: php:7.1-fpm
        volumes:
          - ./.code:/var/www/html  
      db:
        image: mysql:5.7
        volumes:
          - mysql-data:/var/lib/mysql
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: test
          MYSQL_DATABASE: rental

    volumes:
      mysql-data:
  • 0
    если это работает, пожалуйста, примите это @bielu000 bielu000
Теги:
docker

2 ответа

2
Лучший ответ

Как упоминание о докере-хабе php, вы можете видеть по умолчанию, что он содержит только redis redis xdebug.

Некоторые расширения не предоставляются источником PHP, а доступны через PECL. Чтобы установить расширение PECL, используйте команду pecl install для загрузки и компиляции, а затем используйте docker-php-ext-enable, чтобы включить его.

https://hub.docker.com/_/php/

Вы можете использовать один и тот же файл компоновки докеров, просто запустите команду при загрузке контейнера

  php:

image: php:7.1-fpm
command:docker-php-ext-install mysqli
volumes:
  - ./.code:/var/www/html  

Ater вы можете проверить

php -m

Это модули по умолчанию в последних изображениях докеров, которые вы вытащили.

    Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
0

Эта ошибка (could not find driver) означает, что ваш PHP не имеет pdo_mysql модуля pdo_mysql. Вы должны включить его или установить сначала, если он еще не установлен.

  • 0
    Кажется, вы правы, но я использую уже собранный контейнер php7.1-fpm (как вы можете видеть в моем docker-compose), поэтому я не могу установить pdo самостоятельно. Должен ли я создать контейнер php7.1 с помощью моего собственного Dockefile, где я могу разместить инструкцию для установки драйвера pdo?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню