内容纲要

使用 Docker 部署 R 与 CellChat:从零开始的完整教程

在单细胞数据分析领域,CellChat 是一个强大的 R 包,用于推断和可视化细胞间通讯网络。然而,由于其依赖众多(包括 Bioconductor 包、GitHub 第三方包和系统级库),在本地环境中安装常常会遇到各种依赖冲突或缺失问题。

本文将带你使用 Docker 技术,从零开始构建一个纯净、可复现的 R 环境,并成功安装和运行 CellChat。整个过程无需污染本地系统,适合科研、开发和团队协作。


✅ 为什么选择 Docker?

  • 环境隔离:避免污染本地 R 环境
  • 可复现性:任何人运行相同镜像都能得到一致结果
  • 跨平台兼容:Windows、macOS、Linux 通用
  • 易于分享:只需分享 Dockerfile 即可重建环境

🐳 第一步:选择合适的 R Docker 镜像

Rocker 项目(Rocker Project)提供了官方维护的 R 镜像系列。我们有以下两个推荐选项:

✅ 推荐 1:rocker/r-ver(纯净基础镜像)

  • 优点:最小化 R 环境,适合自定义构建
  • 缺点:无预装依赖,需手动安装所有系统库

✅ 推荐 2:rocker/tidyverse(强烈推荐!)

  • 镜像:rocker/tidyverse:4.4
  • 优点:
    • 包含 r-base 和常用 tidyverse
    • 预装了 libcurllibxml2opensslgcc 等常用系统依赖
    • 特别适合需要 devtools::install_github() 的场景

👉 本文选择 rocker/tidyverse:4.4 作为基础镜像。


🛠 第二步:启动容器并进入交互环境

docker run -it --name r-cellchat rocker/tidyverse:4.4 /bin/bash
  • -it:开启交互式终端
  • --name r-cellchat:为容器命名,便于后续操作
  • /bin/bash:直接进入 bash 而非默认的 R 环境

🔧 第三步:安装系统依赖

虽然 tidyverse 镜像已包含许多依赖,但为了安装 CellChat,我们仍需补充一些关键系统库:

apt-get update

apt-get install -y \
    libgit2-dev \
    libssh2-1-dev \
    libcurl4-openssl-dev \
    libssl-dev \
    libxml2-dev \
    libfontconfig1-dev \
    libharfbuzz-dev \
    libfribidi-dev \
    libglpk-dev  # 关键!解决 igraph 的 libglpk.so.40 问题

⚠️ 注意:libglpk-devigraph 的底层依赖,缺失会导致后续加载失败。


📦 第四步:在 R 中安装 R 包

进入 R 环境:

R

然后依次执行以下命令:

1. 安装 devtoolsremotes

install.packages(c("devtools", "remotes"), repos = "https://cloud.r-project.org")

2. 安装 BiocManager(用于 Bioconductor 包)

if (!require("BiocManager", quietly = TRUE)) {
    install.packages("BiocManager", repos = "https://cloud.r-project.org")
}

3. 安装 CellChat 所需的 Bioconductor 依赖包

BiocManager::install(c(
    "BiocBase", 
    "BiocNeighbors", 
    "BiocGenerics", 
    "ComplexHeatmap", 
    "SingleCellExperiment", 
    "SummarizedExperiment"
))

💡 提示:CellChat 依赖多个 Bioconductor 包,必须通过 BiocManager::install() 安装。


🚨 第五步:解决常见安装错误

❌ 错误 1:ERROR: dependencies ‘ComplexHeatmap’, ‘BiocNeighbors’ are not available

原因:未提前安装 Bioconductor 依赖包。

解决方案:如上一步所示,先用 BiocManager::install() 安装所有依赖。


❌ 错误 2:unable to load shared object 'igraph.so': libglpk.so.40: cannot open shared object file

原因:系统缺少 GLPK 线性规划库。

解决方案:在容器中运行:

apt-get install -y libglpk-dev

然后重新尝试安装 CellChat


✅ 第六步:成功安装 CellChat

确认所有依赖已安装后,执行:

devtools::install_github("sqjin/CellChat")

✅ 如果你在国内网络环境,建议使用代理或 remotes::install_github() 配合镜像源。


🧪 第七步:验证 CellChat 是否正常工作

library(CellChat)

# 查看 CellChat 提供的数据集
data(package = "CellChat")

# 手动下载示例数据(如果内置数据缺失)
download.file(
  "https://github.com/sqjin/CellChat/raw/main/data/pbmc.cellchat.rda",
  destfile = "/tmp/pbmc.cellchat.rda"
)
load("/tmp/pbmc.cellchat.rda")

# 运行完整分析流程
pbmc.cellchat <- subsetCellChat(pbmc.cellchat)
pbmc.cellchat <- createCellChat(object = pbmc.cellchat, group.by = "idents")
pbmc.cellchat <- computeCommunProb(pbmc.cellchat)
plot(pbmc.cellchat)

如果图形成功绘制,恭喜你!🎉
👉 CellChat 已在 Docker 环境中完全正常运行!


📦 附录:推荐的 Dockerfile(自动化构建)

FROM rocker/tidyverse:4.4

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        libgit2-dev \
        libssh2-1-dev \
        libcurl4-openssl-dev \
        libssl-dev \
        libxml2-dev \
        libfontconfig1-dev \
        libharfbuzz-dev \
        libfribidi-dev \
        libglpk-dev && \
    rm -rf /var/lib/apt/lists/*

RUN R -e " \
    install.packages(c('devtools', 'remotes'), repos = 'https://cloud.r-project.org'); \
    if (!require('BiocManager', quietly = TRUE)) install.packages('BiocManager'); \
    BiocManager::install(c('BiocBase', 'BiocNeighbors', 'BiocGenerics', 'ComplexHeatmap', 'SingleCellExperiment', 'SummarizedExperiment')); \
    devtools::install_github('sqjin/CellChat'); \
    "

构建镜像:

docker build -t cellchat-env .

运行容器:

docker run -it cellchat-env R

🎯 总结

步骤 关键点
选择镜像 rocker/tidyverse:4.4 最适合开发
系统依赖 必须安装 libglpk-dev
R 包安装 先装 BiocManager 依赖,再装 CellChat
验证安装 使用示例数据或手动下载测试

最后修改日期: 2025年 8月 25日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。