簡體   English   中英

"在 docker 鏡像中安裝 mysql 客戶端"

[英]Install mysql client in docker image

我正在嘗試為 php 構建一個 docker 映像,它可以處理我的 mysql 容器中的數據庫轉儲。 問題是它似乎安裝了mariadb版本而不是客戶端的mysql版本。 這給了我一個錯誤mysqldump: unknown variable 'set-gtid-purged=OFF'<\/code>

執行轉儲的腳本不是我可以更改的,因為它是 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=explo

所以添加這個,安裝所需的客戶端,一切正常。

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

如果您構建該映像,然后運行docker run -it <MyImageName> bash您可以探索發生了什么。

apt show default-mysql-client顯示以下內容,因此您是正確的,它是 mariadb。

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 存儲庫中。 https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

正如上面@jeff-h 所述,自 2021 年 11 月以來,答案略有變化:

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

暫無
暫無

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

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