You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新tiangolo FastAPI Docker镜像后无法安装R 4.1.2的解决方法

问题分析

你遇到的核心问题是基础镜像系统版本变更导致依赖源不兼容:

  • 旧镜像tiangolo/uvicorn-gunicorn-fastapi:python3.8-slim-2021-06-09基于Debian 10(Buster),新镜像2023-01-09版本基于Debian 11(Bullseye)。
  • 你仍在使用Buster专属的CRAN源,且packages.txt中所有包版本均为Debian 10适配版本,在Debian 11环境下无法匹配到对应资源。
解决方案

通过适配Debian 11环境的源和包版本,即可安装R 4.1.2,具体修改如下:

1. 修改Dockerfile

# Download IspR from IspR project pipeline and extract the folder and rename it as r-scripts. Place the r-scripts directory in backend root directory.
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8-slim-2023-01-09

COPY packages.txt /app/packages.txt
# 关闭APT有效期检查(适配快照源)
RUN echo "Acquire::Check-Valid-Until \"false\";\nAcquire::Check-Date \"false\"" | cat > /etc/apt/apt.conf.d/10no-check-valid-until

# 配置适配Bullseye的源
RUN apt-get update && apt-get install -y --no-install-recommends gnupg2=2.2.27-2+deb11u2 && \
    # 添加保留R 4.1.2的CRAN Bullseye快照源
    echo "deb http://snapshot.cran.r-project.org/bin/linux/debian bullseye-cran40/2022-06-01/" >> /etc/apt/sources.list.d/cran.list && \
    # 若需要PostgreSQL 11,添加对应源;不需要可删除该行
    echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main 11" >> /etc/apt/sources.list.d/pgdg.list && \
    # 导入合法密钥
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7 7FCC7D46ACCC4CF8 && \
    apt-get update

# 安装依赖包
RUN apt-get install --no-install-recommends -y $(cat /app/packages.txt) && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get purge --auto-remove -y gnupg2 && \
    apt-get clean

COPY . /app
WORKDIR /app/r-scripts
RUN R -e "install.packages('remotes')"
RUN renv_version=$(cat renv.lock | grep -A3 "renv" | grep -e "Version" | cut -d ':' -f2 | sed 's/"//g' | sed 's/,//g' | awk '{$1=$1};1') && \
    R -e "remotes::install_github('rstudio/renv@${renv_version}')" && \
    rm -rf /tmp/downloaded_packages/ /tmp/*.rds

CMD ["/bin/bash"]

2. 修改packages.txt

git
pkg-config
liblapack-dev
gfortran
libxml2
libxml2-dev
libssl-dev
libcurl4-openssl-dev
libnlopt-dev
libpcre2-8-0
build-essential
r-recommended=4.1.2-1~bullseye.cran.0
r-base=4.1.2-1~bullseye.cran.0
curl
# 若不需要PostgreSQL 11,可删除下面两行或去掉版本号
postgresql=11+238.pgdg110+1
libpq-dev=11.20-0+deb11u1
libblas-dev
libgomp1
zlib1g-dev
zlib1g
关键修改说明
  • 替换CRAN源为Bullseye专属的快照源,确保能获取到R 4.1.2版本;
  • 移除大部分包的Debian 10专属版本号,让APT自动安装Debian 11兼容版本;
  • 仅保留R包和PostgreSQL(若需特定版本)的精准版本号,避免版本冲突;
  • 导入适配Bullseye环境的官方密钥,保证源的合法性;
  • 清理冗余依赖和缓存,减小镜像体积。

内容的提问来源于stack exchange,提问作者user2439278

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:20:33