关于
This skill creates Dockerfiles for R applications using rocker base images and renv for dependency management. It's designed for containerizing R packages, Shiny apps, or analysis pipelines to ensure reproducible builds. Use it when you need to deploy R-based projects with consistent, production-ready containerization.
快速安装
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 中复制并粘贴此命令以安装该技能
技能文档
name: create-r-dockerfile locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Crear un Dockerfile para aplicaciones R utilizando imágenes base rocker, gestión de dependencias con renv, y mejores prácticas para compilación reproducible. Usar cuando se necesite contenerizar un paquete R, una aplicación Shiny, o un pipeline de análisis para despliegue reproducible. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: basic language: multi tags: docker, r, rocker, renv, containerization
Crear R Dockerfile
Crear un Dockerfile para aplicaciones R con imágenes base rocker y gestión de dependencias reproducible.
Cuándo Usar
- Contenerizando un paquete R para despliegue reproducible
- Desplegando una aplicación Shiny en Docker
- Creando pipelines de análisis reproducibles
- Compartiendo entornos R con miembros del equipo
- Integrando código R en pipelines CI/CD
Entradas
- Requerido: Código fuente R (paquete, script o aplicación Shiny)
- Requerido: Lista de dependencias R (DESCRIPTION o renv.lock)
- Opcional: Requisitos de paquetes del sistema (libcurl, libxml2, etc.)
- Opcional: Archivos de configuración (.Renviron, .Rprofile)
- Opcional: Restricciones de imagen base (versión de rocker, variante)
Procedimiento
Paso 1: Seleccionar Imagen Base Rocker
Elegir la imagen rocker apropiada según las necesidades del proyecto.
# Para scripts R y paquetes
FROM rocker/r-ver:4.4.0
# Para aplicaciones Shiny
FROM rocker/shiny-verse:4.4.0
# Para desarrollo con RStudio
FROM rocker/rstudio:4.4.0
# Para ciencia de datos con tidyverse
FROM rocker/tidyverse:4.4.0
Criterios de selección de imagen:
rocker/r-ver— R base mínimo (más pequeña, para producción)rocker/tidyverse— Incluye tidyverse y dependencias del sistemarocker/shiny— Incluye Shiny Serverrocker/shiny-verse— Shiny + tidyverserocker/rstudio— Incluye RStudio Server
Esperado: Imagen base seleccionada coincide con los requisitos del proyecto, la versión de R anclada para reproducibilidad.
En caso de fallo: Verificar versiones disponibles en Docker Hub (docker search rocker), asegurar que la versión de R coincide con el desarrollo local, considerar restricciones de tamaño de imagen.
Paso 2: Instalar Dependencias del Sistema
Agregar bibliotecas del sistema requeridas por los paquetes R.
RUN apt-get update && apt-get install -y --no-install-recommends \
libcurl4-openssl-dev \
libssl-dev \
libxml2-dev \
libgit2-dev \
libfontconfig1-dev \
libharfbuzz-dev \
libfribidi-dev \
libfreetype6-dev \
libpng-dev \
libtiff5-dev \
libjpeg-dev \
&& rm -rf /var/lib/apt/lists/*
Esperado: Todas las dependencias del sistema instaladas, la capa limpia no tiene archivos de caché.
En caso de fallo: Identificar bibliotecas faltantes desde errores de instalación de paquetes R (install.packages() mostrará qué falta), buscar el nombre del paquete Debian para la biblioteca requerida.
Paso 3: Configurar Gestión de Dependencias con renv
Usar renv para la instalación reproducible de paquetes.
# Instalar renv
RUN R -e "install.packages('renv', repos='https://cloud.r-project.org')"
# Copiar archivos de bloqueo primero (caché de capas Docker)
WORKDIR /app
COPY renv.lock renv.lock
COPY .Rprofile .Rprofile
COPY renv/activate.R renv/activate.R
COPY renv/settings.json renv/settings.json
# Restaurar paquetes desde lockfile
RUN R -e "renv::restore()"
# Copiar código de la aplicación (después de paquetes para mejor caché)
COPY . .
Sin renv (alternativa):
RUN R -e "install.packages(c('shiny', 'dplyr', 'ggplot2'), repos='https://cloud.r-project.org')"
Esperado: Paquetes R instalados de forma reproducible desde renv.lock, caché de capas Docker funciona en compilaciones subsecuentes.
En caso de fallo: Ejecutar renv::snapshot() localmente antes de compilar, verificar que renv.lock está actualizado, asegurar que la versión de R en Docker coincide con la versión de renv.lock.
Paso 4: Configurar Punto de Entrada
Definir cómo se ejecuta la aplicación.
Para una aplicación Shiny:
EXPOSE 3838
CMD ["R", "-e", "shiny::runApp('/app', host='0.0.0.0', port=3838)"]
Para un script R:
CMD ["Rscript", "main.R"]
Para un paquete R (ejecución de tests):
CMD ["R", "CMD", "check", "--no-manual", "."]
Esperado: El contenedor se inicia y ejecuta la aplicación R correctamente, los puertos expuestos coinciden con la configuración de la aplicación.
En caso de fallo: Verificar que la aplicación se ejecuta localmente primero, comprobar los logs del contenedor (docker logs <container>), asegurar que los paths de los archivos dentro del contenedor son correctos.
Paso 5: Compilar y Probar
Compilar la imagen Docker y verificar que funciona.
# Compilar imagen
docker build -t mi-app-r:latest .
# Ejecutar contenedor
docker run -p 3838:3838 mi-app-r:latest
# Ejecutar con variables de entorno
docker run -e MI_VARIABLE=valor -p 3838:3838 mi-app-r:latest
# Ejecutar interactivamente para depuración
docker run -it mi-app-r:latest R
Esperado: La imagen se compila exitosamente, el contenedor se ejecuta sin errores, la aplicación es accesible en el puerto configurado.
En caso de fallo: Revisar la salida de compilación para errores de instalación de paquetes, verificar la disponibilidad de puertos, comprobar la asignación de memoria del contenedor (R puede necesitar más RAM).
Validación
- La imagen Docker se compila sin errores
- El contenedor se inicia y ejecuta la aplicación correctamente
- Las dependencias R coinciden con el entorno de desarrollo local
- La caché de capas Docker funciona (recompilaciones rápidas cuando solo cambia el código)
- El tamaño de la imagen es razonable (considerar compilación multi-etapa para producción)
- Las variables de entorno se manejan correctamente
Errores Comunes
- Imagen demasiado grande: Usar compilación multi-etapa o imagen base más pequeña. Limpiar cachés de apt en la misma capa RUN.
- renv.lock desactualizado: Siempre ejecutar
renv::snapshot()localmente antes de compilar la imagen Docker. - Fallo de instalación de paquetes: Generalmente causado por dependencias del sistema faltantes. Revisar mensajes de error para identificar la biblioteca requerida.
- Caché de capas no funciona: Copiar archivos de dependencias antes del código fuente. COPY de renv.lock antes de COPY del código de la aplicación.
- Inconsistencia de versión de R: Anclar la versión de R en la imagen base para coincidir con el entorno de desarrollo.
Habilidades Relacionadas
setup-docker-compose- Orquestar contenedores R con servicios de base de datosoptimize-docker-build-cache- Mejorar tiempos de compilación Docker para proyectos Rcontainerize-mcp-server- Contenerizar servidores MCP basados en Rcreate-dockerfile- Patrones generales de Dockerfile para otros lenguajes
GitHub 仓库
Frequently asked questions
What is the create-r-dockerfile skill?
create-r-dockerfile is a Claude Skill by pjt222. Skills package instructions and resources that Claude loads on demand, so Claude can perform create-r-dockerfile-related tasks without extra prompting.
How do I install create-r-dockerfile?
Use the install commands on this page: add create-r-dockerfile to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does create-r-dockerfile belong to?
create-r-dockerfile is in the Meta category, tagged general.
Is create-r-dockerfile free to use?
Yes. create-r-dockerfile is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
相关推荐技能
Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
