Сейчас я изучаю PDO, и мне показалось, что лучше изучать его в стеке докеров LEMP (Nginx, php-fpm, MariaDB, phpMyadmin) на моем Ubuntu 18.04LTS.
Это мой php-файл:
<?php
try {
$mydb = new PDO('mysql:host=database;dbname=mysql;charset=utf8', 'root', 'admin');
} catch (Exception $e) {
die('Error : ' . $e->getMessage());
}
?>
Как видите, я пытаюсь создать PDO в своем php-коде, чтобы восстановить некоторые данные из моего db. Но каждый раз, когда я получаю это сообщение в своем браузере (Firefox 69.0.2): Error : could not find driver
Я видел это сообщение здесь: "Docker не может подключиться к mariadb с помощью PHP"< /а>. Проблема была очень похожа на мою, но это не сработало для меня.
Примечание: php-fmp и Nginx отлично работают вместе. То же самое для MariaDB и phpMyAdmin.
Вот мой файл docker-compose.yml
:
version: "3"
services:
nginx:
image: tutum/nginx
ports:
- "7050:80"
links:
- phpfpm
volumes:
- ./nginx/default:/etc/nginx/sites-available/default
- ./nginx/default:/etc/nginx/sites-enabled/default
- ./logs/nginx-error.log:/var/log/nginx/error.log
- ./logs/nginx-access.log:/var/log/nginx/access.log
phpfpm:
image: php:fpm
links:
- database:mysql
ports:
- "7051:9000"
volumes:
- ./public:/usr/share/nginx/html
database:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: admin
ports:
- "7052:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
links:
- database:mysql
ports:
- "7053:80"
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: admin
PMA_ARBITRARY: 1
Если бы это можно было решить без создания собственных файлов Dockerfile, было бы здорово. Но если я должен, я сделаю это. Это не проблема.