Php 在docker映像中安装mysql客户端

Php 在docker映像中安装mysql客户端,php,mysql,docker,Php,Mysql,Docker,我正在尝试为php构建一个docker映像,它可以处理mysql容器中的数据库转储。问题是它似乎安装了mariadb版本而不是mysql版本的客户端。这给了我一个错误mysqldump:unknown变量“set gtid purged=OFF” 我无法更改执行转储的脚本,因为它是laravel核心的一部分。它检测服务器sql版本,查看是否应添加该命令。所以我真的需要在我的php映像/容器上有正确的客户端版本 这是我的文件 FROM library/php:7.4-fpm RUN apt-ge

我正在尝试为php构建一个docker映像,它可以处理mysql容器中的数据库转储。问题是它似乎安装了mariadb版本而不是mysql版本的客户端。这给了我一个错误
mysqldump:unknown变量“set gtid purged=OFF”

我无法更改执行转储的脚本,因为它是laravel核心的一部分。它检测服务器sql版本,查看是否应添加该命令。所以我真的需要在我的php映像/容器上有正确的客户端版本

这是我的文件

FROM library/php:7.4-fpm

RUN apt-get update \
    && apt-get install -y default-mysql-client

如果您构建了该映像,请运行
docker run-it bash
您可以探索正在发生的事情

apt显示默认mysql客户端
显示以下内容,因此您是正确的

root@ff27370412ab:/var/www/html# apt show default-mysql-client
Package: default-mysql-client
Version: 1.0.5
Priority: optional
Section: database
Source: mysql-defaults
Maintainer: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
Installed-Size: 10.2 kB
Depends: mariadb-client-10.3
Download-Size: 3532 B
APT-Manual-Installed: yes
APT-Sources: http://deb.debian.org/debian buster/main amd64 Packages
Description: MySQL database client binaries (metapackage)
root@ff27370412ab:/var/www/html#显示默认mysql客户端
包:默认mysql客户端
版本:1.0.5
优先级:可选
第节:数据库
来源:mysql默认值
维护者:Debian MySQL维护者
安装大小:10.2 kB
取决于:mariadb-client-10.3
下载尺寸:3532B
安装APT手册:是
APT资料来源:http://deb.debian.org/debian buster/主amd64软件包
说明:MySQL数据库客户端二进制文件(元包)
然后,您可以运行
aptsearchMySQL
,以查找您可以使用的其他软件包

我浏览了其中一些,但没有找到任何看起来像非马拉伊德的。但您可以使用以下步骤将其添加到apt回购协议中。
我设法找到了解决办法。我决定通读官方mysql映像是如何构建的,并在这里实现相同的解决方案

因此,加上这个,安装了所需的客户端,一切正常

RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 8C718D3B5072E1F5

RUN echo "deb http://repo.mysql.com/apt/debian/ buster mysql-8.0" > /etc/apt/sources.list.d/mysql.list

RUN apt-get update \
    && apt-get install -y mysql-community-client

为什么把所有的东西都堆在一个容器里?容器背后的想法是,您可以制作一个仅用于转储的容器。这是MySQL 8.0的一个功能,因此可能安装了旧版本的客户端?@tadman所有内容都在单独的容器中,但由于转储是从php本身(CLI)运行的,我看不出让它把这个命令传递给另一个容器有什么用。注意,转储是一件很容易复制的事情,所以如果你真的陷入困境,你可能会找到另一个已经这样做的容器,或者你可以很快地将一个容器组合在一起。我感觉PHP映像的基本操作系统没有最新的MySQL,并且提供了不兼容的选项。您也可以尝试其他PHP运行时容器,它可能更为最新。此外,还可以选择在安装中添加额外的存储库(Debian?Ubuntu?),但这会很快变得异常混乱。谢谢!我找到了mysql默认客户端,但没有找到社区…你的评论非常适合我。非常感谢。