BeaverdownContainers 是 Beaverdown2 生物信息学工作流系统的高效 Docker 容器套件 <small>(Efficient Docker container suite for the Beaverdown2 bioinformatics workflow system)</small>。这些容器专为性能和易用性设计,简化了生物信息学和数据分析任务。
✨ 核心特色:
- 🐧 基于 Arch Linux - 轻量、灵活的 Linux 发行版
- 🧰 yay AUR 助手 - 强大的 Arch 用户仓库包管理
- 🐍 Python 3 - 完整的 Python 开发环境
- 📊 R 语言环境 - 完整的统计分析生态系统(40+ 包)
- 📓 JupyterLab - 交互式计算环境(集成 Ark 增强)
- 🔧 Ark + Air - Posit Dev 开发工具链
- 💡 R LSP 支持 - languageserver + lintr 代码质量工具
- 🦀 Rust - 高性能系统编程语言
- 🟢 Node.js - JavaScript 运行时
- 🔵 Go - 现代化编程语言
- 🤖 Claude Code CLI - 已全局安装
容器采用层次化设计,从基础镜像逐步构建,确保每一层都有明确的功能分工和依赖管理。
graph TD
A[archlinux:latest] --> B[beavermake]
B --> C[beaverworker]
B --> D[Python + R + pak + micromamba + yay + rustup + Node.js + npm + Go]
C --> E[R 包 + JupyterLab + SSH + fallingstar10 + Claude Code]
- 基础镜像:
archlinux:latest - 编程语言: Python 3, R, Rust, Node.js, Go
- 包管理器:
- pip (Python)
- pak (R)
- micromamba (跨语言包管理)
- yay (Arch AUR)
- cargo (Rust)
- npm (Node.js)
- go mod (Go)
- 特点: 并行编译配置,最小权限用户
builduser
- 继承自:
fallingstar10/beavermake:latest - R 语言环境:
- 40+ R 包(Shiny, 统计, 生信, 富集, 高级, ML)
- Bioconductor 核心包
- GitHub 专用包
- 集成功能:
- 📓 JupyterLab - 已安装,需手动启动(端口 8889)
- 集成 Ark (Posit Dev) - 增强 JupyterLab 功能
- 🔧 Air (Posit Dev) - R 包管理和发布工具
- 💡 R 语言服务器 - languageserver + lintr 支持
- 🔐 SSH 访问 - 自动启动(端口 2222)
- 👤 fallingstar10 用户 - 默认登录账户(密码:fallingstar10)
- 🤖 Claude Code CLI - 已全局安装
- 👥 交互式用户管理 -
add-user命令创建新用户
- 📓 JupyterLab - 已安装,需手动启动(端口 8889)
- 备用端口: 8080, 8787(可用于 Shiny 等其他服务)
docker pull fallingstar10/beavermake:latest
docker pull fallingstar10/beaverworker:latest# 🛠️ beavermake - 基础开发环境
docker run -it --name beavermake fallingstar10/beavermake:latest
# 🧬 beaverworker - 完整工作环境(推荐)
docker run -p 2222:2222 -p 8889:8889 -p 8080:8080 -p 8787:8787 \
--name beaverworker fallingstar10/beaverworker:latestSSH 访问(自动启动):
ssh fallingstar10@localhost -p 2222
# 密码: fallingstar10启动 JupyterLab(手动启动):
# 方法 1: SSH 登录后启动
docker exec -it beaverworker /bin/bash
su - fallingstar10 -c 'jupyter-lab --no-browser --allow-root --ip=* --port=8889 &'
# 方法 2: 直接启动
docker exec beaverworker su - fallingstar10 -c "jupyter-lab --no-browser --allow-root --ip=* --port=8889" &然后访问: http://localhost:8889
创建新用户:
# 进入容器
docker exec -it beaverworker /bin/bash
# 运行交互式用户管理脚本
sudo add-user脚本将引导您完成用户创建过程。
# 拉取镜像
source("pull_image.R")
# 从源码构建
source("build_image.R")# 构建所有容器镜像
docker build -t fallingstar10/beavermake:latest ./beavermake
docker build -t fallingstar10/beaverworker:latest ./beaverworker项目使用 GitHub Actions 实现持续集成和自动部署:
- 🕐 定时构建: 每周五自动构建
beavermake: 06:00 UTCbeaverworker: 08:00 UTC
- 🔔 触发条件:
- 📅 定时调度(每周)
- 👆 手动触发 (
workflow_dispatch) - 📝 对应目录的
push事件
- 🚀 操作流程: 自动构建并推送到 Docker Hub (
fallingstar10/命名空间)
基础镜像: archlinux:latest
🧰 核心工具:
- Python 3:
python,pip - R:
r,pak包管理器 - micromamba: 轻量级 Conda 替代品
- yay: AUR 包管理器
- Rust:
rustup,rustc,cargo - Node.js:
node,npm - Go:
go
⚙️ 配置优化:
- 并行编译配置
- 最小权限用户
builduser - 镜像优化:清理缓存减少镜像大小
继承自: fallingstar10/beavermake:latest
🎯 主要功能:
- R 基础系统: 完整的 R 语言运行时
- 包管理器: 使用
pak进行高效的 R 包管理 - R 包组:
- 组1: Shiny 生态(DT, shinyWidgets, bslib)
- 组2: 统计和可视化(plotly, pROC, tidyverse)
- 组6: 机器学习(mlr3verse)
- 组7: 开发工具(languageserver, lintr)
-
JupyterLab:
- 状态: 已安装,需要手动启动
- 启动命令:
su - fallingstar10 -c 'jupyter-lab --no-browser --allow-root --ip=* --port=8889 &' - 访问端口: 8889
- 语言支持: Python, R, Bash
- 扩展生态: 可安装丰富的 JupyterLab 扩展
-
Ark (Posit Dev):
- 版本: 0.1.222
- 功能: 增强 JupyterLab 的 R 开发体验
- 安装位置:
/usr/bin/ark - 自动集成: 构建时执行
ark --install
-
Air (Posit Dev):
- 功能: R 包管理和发布工具
- 安装方式: 官方安装脚本
- 用途: 简化 R 包的创建、测试和发布流程
- 状态: 自动启动
- 端口: 2222
- 默认用户: fallingstar10(密码:fallingstar10)
- 配置: 支持 SSH 密钥认证
- 工具:
add-user交互式脚本 - 位置:
/usr/local/bin/add-user - 功能: 创建新用户,配置 sudo、SSH、环境
- 使用:
sudo add-user
- 全局安装: 可直接使用
claude-code命令 - 用途: AI 辅助编程
-
languageserver:
- 功能: 为 R 提供 Language Server Protocol (LSP) 支持
- 用途: 代码补全、语法高亮、错误检查、定义跳转
- 编辑器支持: VS Code, Vim/Neovim, Emacs 等
-
lintr:
- 功能: R 代码静态分析工具
- 用途: 代码风格检查、最佳实践建议、潜在问题检测
- 集成: 可与编辑器、CI/CD 流程集成
- 8080: 可用于 Shiny 等 R Web 应用
- 8787: 预留给其他服务
# 进入容器
docker exec -it beaverworker /bin/bash
# 使用 micromamba 安装包
micromamba install pandas numpy scipy -y
# Python 交互式
python# 使用 pak 安装 R 包
R -e "pak::pkg_install('dplyr', 'ggplot2')"
# R 交互式
R
# 使用 languageserver(LSP 支持)
# 在 VS Code 中安装 R 插件后,自动启用代码补全、跳转等功能
# 使用 lintr 进行代码检查
R -e "lintr::lint_dir('.')"
# 使用 Air 管理 R 包
air --help# 首次使用需要初始化 Rust 环境
source ~/.cargo/env
# 创建新项目
cargo new myproject
cd myproject
cargo run
# 安装常用工具
cargo install ripgrep # rg - 超快的 grep
cargo install fd-find # fd - 超快的 find
cargo install bat # bat - 带高亮的 cat# 初始化项目
npm init -y
# 安装依赖
npm install express
# 安装全局工具
npm install -g typescript prettier eslint yarn
# 使用 Claude Code
claude-code# 检查版本
go version
# 创建项目
mkdir myproject && cd myproject
go mod init myproject
# 运行程序
go run main.go- 内存: 至少 4GB RAM(推荐 8GB+)
- 存储: 至少 10GB 可用磁盘空间
- CPU: 支持虚拟化的多核处理器(推荐 4 核以上)
- Docker: 版本 20.10 或更高
- 操作系统: 支持 Docker 的任何系统
- 🐧 Linux: 原生支持
- 🪟 Windows: 推荐使用 WSL2
- 🍎 macOS: 原生支持
# 检查端口冲突
netstat -tulpn | grep <端口号>
# 查看容器日志
docker logs beaverworker# 检查 SSH 服务状态
docker exec beaverworker /bin/bash -c "ps aux | grep sshd"
# 查看 SSH 配置
docker exec beaverworker cat /etc/ssh/sshd_config# 检查 Jupyter 进程
docker exec beaverworker /bin/bash -c "ps aux | grep jupyter"
# 重启容器
docker restart beaverworker欢迎任何形式的贡献!
- 层次清晰: 保持 Dockerfile 的继承关系明确
- 镜像优化: 尽量减少镜像大小
- 向后兼容: 确保新版本不破坏现有功能
本项目基于 MIT 许可证开源发布。
感谢以下优秀项目:
- 🐧 Arch Linux - 轻量、灵活的 Linux 发行版
- 📊 R 语言社区 - 丰富的统计分析和可视化包
- 🧬 Bioconductor - 生物信息学 R 包生态系统
- 🔧 Posit - Ark, Air 等 R 开发工具
- 📦 Conda/Mamba - Python 包和环境管理
- 🐋 Docker - 容器化技术标准
- 🤖 Anthropic - Claude Code CLI
✨ 简化、统一、高效的生物信息学容器套件!
⭐ Star 本项目 | 📝 报告问题 | 🔧 参与贡献