内容纲要
使用 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
包 - 预装了
libcurl
、libxml2
、openssl
、gcc
等常用系统依赖 - 特别适合需要
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-dev
是igraph
的底层依赖,缺失会导致后续加载失败。
📦 第四步:在 R 中安装 R 包
进入 R 环境:
R
然后依次执行以下命令:
1. 安装 devtools
和 remotes
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 |
验证安装 | 使用示例数据或手动下载测试 |
留言