create-r-dockerfile
关于
This skill generates optimized Dockerfiles for R projects using rocker base images. It handles system dependencies, R package installation, and renv integration with layer ordering for efficient rebuilds. Use it when containerizing R applications, creating reproducible environments, or deploying R-based services like Shiny or Plumber.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-dockerfile在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
造 R Dockerfile
用 rocker 基像構 R 案 Dockerfile 含正依理。
用
- 容器化 R 應或析
- 建可重 R 境
- 部 R 基服(Shiny、Plumber、MCP server)
- 設一致發境
入
- 必:含依之 R 案(DESCRIPTION 或 renv.lock)
- 必:目(發、產、或服)
- 可:R 版(默:最新穩)
- 可:所需額系庫
行
一:擇基像
| 用 | 基像 | 寸 |
|---|---|---|
| 最小 R 行 | rocker/r-ver:4.5.0 | ~800MB |
| 含 tidyverse | rocker/tidyverse:4.5.0 | ~1.8GB |
| 含 RStudio Server | rocker/rstudio:4.5.0 | ~1.9GB |
| Shiny server | rocker/shiny-verse:4.5.0 | ~2GB |
得: 擇合案需而無冗之基像。
敗: 疑→始於 rocker/r-ver(最小)、需方加包。察 rocker-org 全像錄。
二:書 Dockerfile
FROM rocker/r-ver:4.5.0
# Install system dependencies
# Group by purpose for clarity
RUN apt-get update && apt-get install -y \
# HTTP/SSL
libcurl4-openssl-dev \
libssl-dev \
# XML processing
libxml2-dev \
# Git integration
libgit2-dev \
libssh2-1-dev \
# Graphics
libfontconfig1-dev \
libharfbuzz-dev \
libfribidi-dev \
libfreetype6-dev \
libpng-dev \
libtiff5-dev \
libjpeg-dev \
# Utilities
git \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install R packages
# Order: least-changing first for cache efficiency
RUN R -e "install.packages(c( \
'remotes', \
'devtools', \
'renv' \
), repos='https://cloud.r-project.org/')"
# Set working directory
WORKDIR /workspace
# Copy renv files first (cache layer)
COPY renv.lock renv.lock
COPY renv/activate.R renv/activate.R
# Restore packages from lockfile
RUN R -e "renv::restore()"
# Copy project files
COPY . .
# Default command
CMD ["R"]
得: Dockerfile 以 docker build -t myproject . 成構。
敗: apt-get install 中敗→察包名合目發行(Debian)。renv::restore() 敗→保 renv.lock 與 renv/activate.R 復前已複。
三:建 .dockerignore
.git
.Rproj.user
.Rhistory
.RData
renv/library
renv/cache
renv/staging
docs/
*.tar.gz
得: .dockerignore 自 Docker 脈除 Git 史、IDE 檔、地 renv 庫、構品。
敗: Docker 構仍複餘檔→驗 .dockerignore 於 Dockerfile 同目、用正 glob 模。
四:構與試
docker build -t r-project:latest .
docker run --rm -it r-project:latest R -e "sessionInfo()"
得: 容器起含正 R 版與諸可用包。sessionInfo() 出確期 R 版。
敗: 察構誌之系依誤。加缺 -dev 包於 apt-get install。
五:優為產
產部用多段構:
# Build stage
FROM rocker/r-ver:4.5.0 AS builder
RUN apt-get update && apt-get install -y libcurl4-openssl-dev libssl-dev
COPY renv.lock .
RUN R -e "install.packages('renv'); renv::restore()"
# Runtime stage
FROM rocker/r-ver:4.5.0
COPY --from=builder /usr/local/lib/R/site-library /usr/local/lib/R/site-library
COPY . /app
WORKDIR /app
CMD ["Rscript", "main.R"]
得: 多段構生小終像。行段僅含編 R 包、非構具。
敗: 行段包載敗→保 COPY --from=builder 之庫路合 R 裝包處。兩段以 R -e ".libPaths()" 察。
驗
-
docker build無誤畢 - 容器起 R 段行
- 諸需包可用
-
.dockerignore除餘檔 - 像寸合用
- 僅碼變時重構速(層快行)
忌
- 缺系依:R 含編碼之包需
-dev庫。察install.packages()誤訊 - 層快失效:諸檔於裝包前複→碼每變必失快。先複鎖檔
- 大像:
apt-get install後rm -rf /var/lib/apt/lists/*。考多段構 - 時區問:加
ENV TZ=UTC或裝tzdata為時區覺操 - 行為 root:產加非 root 用:
RUN useradd -m appuser && USER appuser
例
# Development container with mounted source
docker run --rm -it -v $(pwd):/workspace r-project:latest R
# Plumber API service
docker run -d -p 8000:8000 r-api:latest
# Shiny app
docker run -d -p 3838:3838 r-shiny:latest
參
setup-docker-compose- 調多容器containerize-mcp-server- MCP R 服專optimize-docker-build-cache- 進快策manage-renv-dependencies- renv.lock 入 Docker 構
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
