![](/img/trans.png)
[英]Docker PHP MYSQL Laravel 7 php artisan migrate (could not find driver)
[英]Docker Laravel Mysql: could not find driver
當我運行docker-compose up
並執行一些composer
命令時,出現錯誤
在 Connection.php 第 664 行:找不到驅動程序(SQL:select
id
,name
fromusers
In Connector.php 第 68 行:找不到驅動程序...
為什么 Laravel 無法連接到 mysql? 我可以在docker-compose exec web bash
執行mysql -h db
並且它可以工作。
我的設置
docker-compose.yml
version: '3'
services:
web:
build: ./webserver
ports:
- "80:80"
- "443:443"
volumes:
- //docker/dockertest/webserver/app:/var/www/vhosts/app
links:
- db
command:
- /usr/local/bin/apache2_install_composer_dependencies.sh
db:
image: mysql:8.0
container_name: db
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: myDb
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- //docker/dockertest/install/db_dump:/docker-entrypoint-initdb.d
- persistent:/var/lib/mysql
networks:
- default
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8000:80
environment:
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
persistent:
Laravel .env
(我在config/database.php
引用了這些值)
...
DB_CONNECTION=mysql
#host points to Docker container
DB_HOST=db
DB_PORT=3306
DB_DATABASE=myDb
DB_USERNAME=user
DB_PASSWORD=test
....
webserver/Dockerfile
FROM php:7.2.19-apache-stretch
# Configure Apache server
COPY config_apache/sites-available /etc/apache2/sites-available
# Create symlink in sites-enabled
WORKDIR /etc/apache2/sites-enabled
RUN ln -s /etc/apache2/sites-available/app.conf app.conf
RUN mkdir -p /var/www/vhosts/app/logs
COPY /build_files/install_composer_dependencies.sh /usr/local/bin/apache2_install_composer_dependencies.sh
RUN apt-get update -y && apt-get install -y curl nano libapache2-mod-geoip git zip unzip mysql-client
# Install Composer
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
# Verify installer
&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot \
&& rm -f /tmp/composer-setup.*
RUN a2enmod rewrite
RUN a2enmod geoip
RUN service apache2 restart
將RUN docker-php-ext-install mysqli pdo pdo_mysql
(沒有mysql
)添加到 Dockerfile 作為@NigelRen 建議解決了這個錯誤。
嘗試使用以下命令安裝 php-mysql sudo apt-get install php-mysql
並重新啟動服務器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.