SKILL·8B89EA

create-r-dockerfile

pjt222
Updated 1 month ago
8 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, renv integration, and layer ordering for fast rebuilds. Use it when containerizing R applications, creating reproducible environments, or deploying R-based services like Shiny or Plumber APIs.

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


name: create-r-dockerfile description: > Erstelle ein Dockerfile fuer R-Projekte mit rocker-Basisimages. Umfasst die Installation von Systemabhaengigkeiten, R-Paketinstallation, renv-Integration und optimierte Layer-Reihenfolge fuer schnelle Rebuilds. Verwende diesen Skill beim Containerisieren einer R-Anwendung oder Analyse, beim Erstellen reproduzierbarer R-Umgebungen, beim Deployen R-basierter Dienste (Shiny, Plumber, MCP-Server) oder beim Einrichten konsistenter Entwicklungsumgebungen auf verschiedenen Rechnern. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: Docker tags: docker, r, rocker, container, reproducibility locale: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

R-Dockerfile erstellen

Erstelle ein Dockerfile fuer R-Projekte mit rocker-Basisimages und ordnungsgemaessem Abhaengigkeitsmanagement.

Wann verwenden

  • Containerisieren einer R-Anwendung oder Analyse
  • Erstellen reproduzierbarer R-Umgebungen
  • Deployen R-basierter Dienste (Shiny, Plumber, MCP-Server)
  • Einrichten konsistenter Entwicklungsumgebungen

Eingaben

  • Erforderlich: R-Projekt mit Abhaengigkeiten (DESCRIPTION oder renv.lock)
  • Erforderlich: Zweck (Entwicklung, Produktion oder Dienst)
  • Optional: R-Version (Standard: neueste stabile Version)
  • Optional: Zusaetzlich benoetigte Systembibliotheken

Vorgehensweise

Schritt 1: Basisimage waehlen

AnwendungsfallBasisimageGroesse
Minimale R-Laufzeitumgebungrocker/r-ver:4.5.0~800MB
Mit tidyverserocker/tidyverse:4.5.0~1.8GB
Mit RStudio Serverrocker/rstudio:4.5.0~1.9GB
Shiny-Serverrocker/shiny-verse:4.5.0~2GB

Erwartet: Ein Basisimage wird ausgewaehlt, das den Projektanforderungen entspricht, ohne unnoetige Aufblaehung.

Bei Fehler: Bei Unsicherheit, welches Image verwendet werden soll, mit rocker/r-ver (minimal) beginnen und Pakete nach Bedarf hinzufuegen. Den vollstaendigen Image-Katalog unter rocker-org pruefen.

Schritt 2: Dockerfile schreiben

FROM rocker/r-ver:4.5.0

# Systemabhaengigkeiten installieren
# Nach Zweck gruppiert fuer Uebersichtlichkeit
RUN apt-get update && apt-get install -y \
    # HTTP/SSL
    libcurl4-openssl-dev \
    libssl-dev \
    # XML-Verarbeitung
    libxml2-dev \
    # Git-Integration
    libgit2-dev \
    libssh2-1-dev \
    # Grafik
    libfontconfig1-dev \
    libharfbuzz-dev \
    libfribidi-dev \
    libfreetype6-dev \
    libpng-dev \
    libtiff5-dev \
    libjpeg-dev \
    # Hilfsprogramme
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# R-Pakete installieren
# Reihenfolge: am wenigsten aenderbare zuerst fuer Cache-Effizienz
RUN R -e "install.packages(c( \
    'remotes', \
    'devtools', \
    'renv' \
    ), repos='https://cloud.r-project.org/')"

# Arbeitsverzeichnis setzen
WORKDIR /workspace

# Zuerst renv-Dateien kopieren (Cache-Layer)
COPY renv.lock renv.lock
COPY renv/activate.R renv/activate.R

# Pakete aus Lockfile wiederherstellen
RUN R -e "renv::restore()"

# Projektdateien kopieren
COPY . .

# Standardbefehl
CMD ["R"]

Erwartet: Dockerfile wird erfolgreich mit docker build -t myproject . gebaut.

Bei Fehler: Wenn der Build waehrend apt-get install fehlschlaegt, Paketnamen fuer die Zieldistribution (Debian) pruefen. Wenn renv::restore() fehlschlaegt, sicherstellen, dass renv.lock und renv/activate.R vor dem Restore-Schritt kopiert werden.

Schritt 3: .dockerignore erstellen

.git
.Rproj.user
.Rhistory
.RData
renv/library
renv/cache
renv/staging
docs/
*.tar.gz

Erwartet: .dockerignore schliesst Git-Verlauf, IDE-Dateien, lokale renv-Bibliothek und Build-Artefakte aus dem Docker-Kontext aus.

Bei Fehler: Wenn der Docker-Build weiterhin unerwuenschte Dateien kopiert, sicherstellen, dass .dockerignore im selben Verzeichnis wie das Dockerfile liegt und korrekte Glob-Muster verwendet.

Schritt 4: Bauen und Testen

docker build -t r-project:latest .
docker run --rm -it r-project:latest R -e "sessionInfo()"

Erwartet: Container startet mit korrekter R-Version und alle Pakete sind verfuegbar. Die sessionInfo()-Ausgabe bestaetigt die erwartete R-Version.

Bei Fehler: Build-Logs auf Systemabhaengigkeitsfehler pruefen. Fehlende -dev-Pakete zum apt-get install-Layer hinzufuegen.

Schritt 5: Fuer Produktion optimieren

Fuer Produktions-Deployments Multi-Stage-Builds verwenden:

# Build-Phase
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()"

# Laufzeit-Phase
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"]

Erwartet: Multi-Stage-Build erzeugt ein kleineres finales Image. Die Laufzeit-Phase enthaelt nur kompilierte R-Pakete, keine Build-Tools.

Bei Fehler: Wenn Pakete in der Laufzeit-Phase nicht geladen werden koennen, sicherstellen, dass der Bibliothekspfad in COPY --from=builder mit dem Installationsort der R-Pakete uebereinstimmt. Mit R -e ".libPaths()" in beiden Phasen pruefen.

Validierung

  • docker build wird fehlerfrei abgeschlossen
  • Container startet und R-Sitzung funktioniert
  • Alle erforderlichen Pakete sind verfuegbar
  • .dockerignore schliesst unnoetige Dateien aus
  • Image-Groesse ist angemessen fuer den Anwendungsfall
  • Rebuilds sind schnell, wenn sich nur Code aendert (Layer-Caching funktioniert)

Haeufige Fehler

  • Fehlende Systemabhaengigkeiten: R-Pakete mit kompiliertem Code benoetigen -dev-Bibliotheken. Fehlermeldungen waehrend install.packages() pruefen.
  • Layer-Cache-Invalidierung: Das Kopieren aller Dateien vor der Paketinstallation invalidiert den Cache bei jeder Code-Aenderung. Zuerst die Lockfile kopieren.
  • Grosse Images: rm -rf /var/lib/apt/lists/* nach apt-get install verwenden. Multi-Stage-Builds in Betracht ziehen.
  • Zeitzonen-Probleme: ENV TZ=UTC hinzufuegen oder tzdata fuer zeitzonenbewusste Operationen installieren.
  • Als Root ausfuehren: Fuer Produktion einen Nicht-Root-Benutzer hinzufuegen: RUN useradd -m appuser && USER appuser

Beispiele

# Entwicklungscontainer mit eingehaengtem Quellcode
docker run --rm -it -v $(pwd):/workspace r-project:latest R

# Plumber-API-Dienst
docker run -d -p 8000:8000 r-api:latest

# Shiny-App
docker run -d -p 3838:3838 r-shiny:latest

Verwandte Skills

  • setup-docker-compose - Mehrere Container orchestrieren
  • containerize-mcp-server - Spezialfall fuer MCP-R-Server
  • optimize-docker-build-cache - Erweiterte Caching-Strategien
  • manage-renv-dependencies - renv.lock speist Docker-Builds

GitHub Repository

pjt222/agent-almanac
Path: i18n/de/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