基于debian:12-slim的Python镜像构建时MySQL源apt update报404错误
解决Docker构建中MySQL源Bookworm版本404错误
问题背景
将基础镜像从基于Debian 11(Bullseye)的Python 3.8.16-slim切换为Debian 12(Bookworm)的Python 3.8.18-slim后,Dockerfile构建失败,核心错误为访问http://repo.mysql.com/apt/debian bookworm Release时返回404,原因是旧版本的mysql-apt-config未适配Debian 12的源配置。
解决方案
方案1:升级mysql-apt-config到支持Bookworm的版本
旧版本mysql-apt-config_0.8.22-1_all.deb不支持Debian 12,需替换为兼容Bookworm的新版本(如0.8.29-1及以上):
- 将新版本的
mysql-apt-config_*.deb上传到S3路径s3://3rdparty-packages/ - 修改Dockerfile中的对应命令:
RUN aws s3 cp s3://3rdparty-packages/mysql-apt-config_0.8.29-1_all.deb . && \ DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.29-1_all.deb
方案2:直接使用Debian官方源的MySQL依赖
Debian Bookworm的官方源已包含default-libmysqlclient-dev,无需额外添加MySQL第三方源,可删除mysql-apt-config相关安装步骤:
修改后的Dockerfile片段:
FROM python:3.8.18-slim RUN pip install awscli==1.19.29 # 无需再安装wget/lsb-release/gnupg,直接安装所需依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ g++ \ pkg-config \ default-libmysqlclient-dev \ libunistring-dev \ libboost-all-dev \ libboost-program-options-dev \ libffi-dev \ gcc automake autoconf libtool make \ && rm -rf /var/lib/apt/lists/* [...]
方案3:手动指定兼容的MySQL源版本
若必须使用MySQL官方源,可通过debconf预先配置为使用Bullseye的源(与Bookworm兼容):
RUN aws s3 cp s3://3rdparty-packages/mysql-apt-config_0.8.22-1_all.deb . && \ # 预先配置源版本为bullseye echo "mysql-apt-config mysql-apt-config/repo-codename select bullseye" | debconf-set-selections && \ echo "mysql-apt-config mysql-apt-config/select-server select mysql-8.0" | debconf-set-selections && \ echo "mysql-apt-config mysql-apt-config/select-product select Ok" | debconf-set-selections && \ DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.22-1_all.deb
内容的提问来源于stack exchange,提问作者gmoss
相关产品推荐
相关产品推荐

