php - 在docker镜像中安装mysql客户端

标签 php mysql docker

我正在尝试为 php 构建一个 docker 镜像,它可以处理我的 mysql 容器中的数据库转储。问题是好像安装了mariadb版本而不是mysql版本的客户端。这给了我一个错误 mysqldump: unknown variable 'set-gtid-purged=OFF'执行转储的脚本不是我可以更改的,因为它是 Laravel 核心的一部分。它检测服务器 sql 版本以查看它是否应该添加该命令。所以我真的需要在我的 php 图像/容器上有正确的客户端版本。
这是我的 Dockerfile

FROM library/php:7.4-fpm

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

最佳答案

我设法找到了解决方案。我决定通读官方mysql镜像是如何构建的,并在这里实现相同的解决方案。
https://hub.docker.com/layers/mysql/library/mysql/latest/images/sha256-b589f11ab39a852fd13090aeb56314978c73a16d615e28ec148306889b67889f?context=explore
所以添加这个,安装所需的客户端,一切正常。

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

关于php - 在docker镜像中安装mysql客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64059522/

相关文章:

PHP MVC 一般问题

mysql - 如何删除mysql中的外键?

installation - 如何使用Shell脚本在WSO2中安装功能

php - WordPress通过ID查询mysql数据库

php - 将 sheet1(excel) 转换为标准 sheet2(excel) 的程序

mysql - Ubuntu 20.04 服务器(AWS EC2)上基于 Docker + MySQL 8.0.26 的项目的 lower_case_table_names 错误

maven - Jenkins控制台未显示在Docker容器上运行的命令的输出

Docker 容器在执行 docker run 命令时未启动

php - Markdown(带有 strip_tags)是否足以阻止 XSS 攻击?

php - 使用 SUM 基于时间范围显示数据