create-r-dockerfile
Acerca de
Esta habilidad genera Dockerfiles optimizados para proyectos R utilizando imágenes base de rocker. Maneja dependencias del sistema, instalación de paquetes R e integración con renv, ordenando las capas para reconstrucciones eficientes. Úsela al containerizar aplicaciones R, crear entornos reproducibles o desplegar servicios basados en R como Shiny o Plumber.
Instalación rápida
Claude Code
Recomendadonpx 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-dockerfileCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
造 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 構
Repositorio GitHub
Habilidades relacionadas
content-collections
MetaEsta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.
polymarket
MetaEsta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.
creating-opencode-plugins
MetaEsta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.
sglang
MetaSGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.
