create-r-dockerfile
について
このスキルは、rockerベースイメージを使用してRプロジェクトのDockerfileを生成します。システム依存関係の処理、Rパッケージのインストール、renvの統合に対応し、効率的なリビルドのためにレイヤーの順序を最適化します。Rアプリケーションのコンテナ化、再現可能な環境の構築、ShinyやPlumber APIなどのRベースサービスのデプロイ時にご利用ください。
クイックインストール
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
為 R 項目以 rocker 基像建 Dockerfile,含正依管。
用時
- 將 R 應用或析入容器
- 建可重現之 R 境
- 布 R 服(Shiny、Plumber、MCP 服)
- 建一致之開發境
入
- 必要:有依之 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 服 | 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 於 restore 前已複。
第三步:建 .dockerignore
.git
.Rproj.user
.Rhistory
.RData
renv/library
renv/cache
renv/staging
docs/
*.tar.gz
得: .dockerignore 排 Git 史、IDE 文件、本 renv 庫、建物於 Docker 脈之外。
敗則: 若 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()之誤 - 層緩失效:裝包前複諸文件則每變碼而失緩。宜先複 lockfile。
- 大像:
apt-get install後用rm -rf /var/lib/apt/lists/*。考多階建。 - 時區問:加
ENV TZ=UTC或裝tzdata以時區感操作 - 根運:產境加非根用者:
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(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
