首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker镜像中安装mysql客户端

在docker镜像中安装mysql客户端
EN

Stack Overflow用户
提问于 2020-09-25 15:14:43
回答 3查看 10.3K关注 0票数 3

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

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

这是我的Dockerfile

代码语言:javascript
复制
FROM library/php:7.4-fpm

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

回答 3

Stack Overflow用户

发布于 2020-09-25 16:46:39

我设法找到了一个解决方案。我决定通读一下官方的mysql镜像是如何构建的,并在这里实现相同的解决方案。

https://hub.docker.com/layers/mysql/library/mysql/latest/images/sha256-b589f11ab39a852fd13090aeb56314978c73a16d615e28ec148306889b67889f?context=explore

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

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2020-09-25 16:00:26

如果您构建了该映像,然后运行docker run -it <MyImageName> bash,那么您可以稍微探索一下发生了什么。

apt show default-mysql-client显示了以下内容,因此您是正确的。

代码语言:javascript
复制
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)

然后,您可以运行apt search mysql来查找您可以使用的其他包。

我浏览了其中的几个,但没有找到任何看起来像非maraidb的。但是您可以使用以下步骤将其添加到您的apt repo中。https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

票数 3
EN

Stack Overflow用户

发布于 2022-01-25 16:57:56

正如上面的@jeff-h所说,自2021年11月以来,答案略有变化:

代码语言:javascript
复制
RUN set -ex; \
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
    key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
    export GNUPGHOME="$(mktemp -d)"; \
    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
    gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
    gpgconf --kill all; \
    rm -rf "$GNUPGHOME"; \
    apt-key list > /dev/null

这里的关键区别(双关语)是新的keyserver地址。

旧版ha.pool.sks-keyservers.net

  • New:keyserver.ubuntu.com

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64059522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档