我正在学习Docker,所以我尝试将我之前制作的一个老proyect进行docker化,这是一个Symfony 5应用程序,就像一个商店应用程序,因此它使用mysql数据库。
我有以下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
时,一切似乎都正常,当我转到localhost:9090
时,我遇到了有关权限的错误,因此我在php- apache容器来修复它,我刷新页面然后得到chmod -R 777 var
在google上搜索时,我发现了几种解决方案,它们说类似我需要运行此命令来对其进行修复
sudo apt-get install php7.2-mysql
当我跑步时会发生这种情况
E:无法找到软件包php7.2-mysql
E:通过glob'php7.2-mysql'找不到任何软件包
E:regex'php7.2-mysql'找不到任何软件包
或者这个
apt-get安装php-mysql
这会引发此错误
软件包'php-mysql'没有安装候选对象
关于安装某些东西的任何其他命令都会引发类似上面两个错误之一,我该如何解决此驱动程序错误?
关于我的容器的一些信息
An exception occurred in driver: could not find driver
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/"
这是我来自symfony项目的.env
root@a15f68bd3605:/# uname -a
Linux a15f68bd3605 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 GNU/Linux
答案 0 :(得分:1)
您需要在容器中启用 pdo_mysql
扩展。
您可以通过将这一行添加到您的 Dockerfile 中来做到这一点:
RUN docker-php-ext-install pdo_mysql
答案 1 :(得分:-1)
通常,在之后将软件安装在容器中是一种不好的做法。确保首先使用正确的容器。
例如,您可以使用webdevops容器。要使用它,只需将Dockerfile中的行FROM php:7.3.3-apache
替换为FROM webdevops/php:debian-8-php7
有关https://github.com/webdevops/Dockerfile上的webdevops容器的更多信息