[英]Docker: E: Unable to locate package mysql-client —-no-install-recommends
[英]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鏡像是如何構建的,並在這里實現相同的解決方案。
所以添加這個,安裝所需的客戶端,一切正常。
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.