簡體   English   中英

Dockerized Symfony 5 應用程序錯誤“驅動程序中發生異常:找不到驅動程序”

[英]Dockerized Symfony 5 app error “An exception occurred in driver: could not find driver”

我正在學習 Docker 所以我嘗試對我不久前制作的一個舊項目進行 docker 化,它是一個 Symfony 5 應用程序,它就像一個商店應用程序,所以它使用一個 Z81C3B080DAD537DE7E10E09EZA4 數據庫。

我有以下 docker 撰寫

version: '3.7'
services:
  php:
    build: 
        context: .
        dockerfile: docker/build/php/Dockerfile
    ports: 
        - "9090:80"

  mysql:
    image: mysql:5.7
    environment: 
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root}

現在,在docker/build/php/Dockerfile

FROM php:7.3.3-apache

COPY . /var/www/html

當我構建映像然后運行docker-compose up它似乎一切正常,當我 go 到localhost:9090時,我收到有關權限的錯誤,所以我在 php-apache 容器中運行chmod -R 777 var來修復它,我刷新然后我得到的頁面An exception occurred in driver: could not find driver

在谷歌上搜索我發現了幾個解決方案,上面寫着我需要運行這個命令來修復它

sudo apt-get install php7.2-mysql

當我運行時會發生這種情況

E: 無法定位 package php7.2-mysql

E: 通過 glob 'php7.2-mysql' 找不到任何 package

E: 通過正則表達式 'php7.2-mysql' 找不到任何 package

或者這個

apt-get 安裝 php-mysql

這會引發此錯誤

Package 'php-mysql' 沒有安裝候選

有關安裝某些東西的任何其他命令都會引發類似於上面兩個之一的錯誤,我該如何解決這個驅動程序錯誤?

有一些關於我的容器的信息

root@a15f68bd3605:/# cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@a15f68bd3605:/# uname -a
Linux a15f68bd3605 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 GNU/Linux

這是來自 symfony 項目的 my.env

DATABASE_URL=mysql://root:@127.0.0.1:3306/popcollector?serverVersion=5.7

您需要在容器中啟用pdo_mysql擴展。 您可以通過將此行添加到 Dockerfile 來做到這一點:

RUN docker-php-ext-install pdo_mysql

一般來說,之后在容器中安裝軟件是一種不好的做法。 確保首先使用正確的容器。

例如,您可以使用 webdevops 容器。 要使用它,只需將 Dockerfile 中的FROM php:7.3.3-apache替換為FROM webdevops/php:debian-8-php7

有關 https 上的 webdevops 容器的更多信息://github.com/webdevops/Dockerfile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM