SKILL·66753C

create-r-dockerfile

pjt222
Updated 1 month ago
20 views
21
3
21
View on GitHub
Metaaimcpdesign

About

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.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-dockerfile

Copy and paste this command in Claude Code to install this skill

Documentation

造 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
含 tidyverserocker/tidyverse:4.5.0~1.8GB
含 RStudio Serverrocker/rstudio:4.5.0~1.9GB
Shiny serverrocker/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.lockrenv/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 installrm -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 Repository

pjt222/agent-almanac
Path: i18n/wenyan-ultra/skills/create-r-dockerfile
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams
FAQ

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 ai, mcp and design.

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.

Related Skills

content-collections
Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill
polymarket
Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill
creating-opencode-plugins
Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill
sglang
Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill