MCP HubMCP Hub
Вернуться к навыкам

create-r-dockerfile

pjt222
Обновлено 2 days ago
6 просмотров
17
2
17
Посмотреть на GitHub
Метаmcp

О программе

Этот навык Claude создает оптимизированные Dockerfile для проектов на R, используя базовые образы rocker. Он обрабатывает системные зависимости, установку пакетов R, интеграцию с renv и упорядочивание слоев для быстрой пересборки. Используйте его для контейнеризации R-приложений, создания воспроизводимых сред или развертывания сервисов на основе R, таких как Shiny или Plumber API.

Быстрая установка

Claude Code

Рекомендуется
Основной
npx skills add pjt222/agent-almanac -a claude-code
Команда плагинаАльтернативный
/plugin add https://github.com/pjt222/agent-almanac
Git клонированиеАльтернативный
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-dockerfile

Скопируйте и вставьте эту команду в Claude Code для установки этого навыка

Документация


name: create-r-dockerfile description: > rockerベースイメージを使用してRプロジェクト用のDockerfileを作成する。システム依存関係のインストール、 Rパッケージのインストール、renv統合、高速リビルドのための最適化されたレイヤー順序をカバーする。 Rアプリケーションや分析のコンテナ化、再現可能なR環境の構築、Rベースサービス(Shiny、Plumber、 MCPサーバー)のデプロイ、またはマシン間で一貫した開発環境を構築する際に使用する。 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: ja source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

R Dockerfileの作成

rockerベースイメージを使用し、適切な依存関係管理を行うRプロジェクト用Dockerfileを構築する。

使用タイミング

  • Rアプリケーションや分析のコンテナ化
  • 再現可能なR環境の構築
  • Rベースサービス(Shiny、Plumber、MCPサーバー)のデプロイ
  • 一貫した開発環境のセットアップ

入力

  • 必須: 依存関係を持つRプロジェクト(DESCRIPTIONまたはrenv.lock)
  • 必須: 用途(開発、本番、またはサービス)
  • 任意: Rバージョン(デフォルト: 最新安定版)
  • 任意: 必要な追加システムライブラリ

手順

ステップ1: ベースイメージの選択

ユースケースベースイメージサイズ
最小限の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を参照。

ステップ2: Dockerfileの作成

FROM rocker/r-ver:4.5.0

# システム依存関係のインストール
# 目的別にグループ化して明確にする
RUN apt-get update && apt-get install -y \
    # HTTP/SSL
    libcurl4-openssl-dev \
    libssl-dev \
    # XML処理
    libxml2-dev \
    # Git統合
    libgit2-dev \
    libssh2-1-dev \
    # グラフィックス
    libfontconfig1-dev \
    libharfbuzz-dev \
    libfribidi-dev \
    libfreetype6-dev \
    libpng-dev \
    libtiff5-dev \
    libjpeg-dev \
    # ユーティリティ
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Rパッケージのインストール
# 順序: キャッシュ効率のため変更頻度の低いものから
RUN R -e "install.packages(c( \
    'remotes', \
    'devtools', \
    'renv' \
    ), repos='https://cloud.r-project.org/')"

# 作業ディレクトリの設定
WORKDIR /workspace

# renvファイルを先にコピー(キャッシュレイヤー)
COPY renv.lock renv.lock
COPY renv/activate.R renv/activate.R

# ロックファイルからパッケージを復元
RUN R -e "renv::restore()"

# プロジェクトファイルをコピー
COPY . .

# デフォルトコマンド
CMD ["R"]

期待結果: docker build -t myproject . でDockerfileが正常にビルドされる。

失敗時: apt-get install中にビルドが失敗した場合、対象ディストロ(Debian)のパッケージ名を確認する。renv::restore()が失敗した場合、renv.lockrenv/activate.Rがrestoreステップの前にコピーされていることを確認する。

ステップ3: .dockerignoreの作成

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

期待結果: .dockerignoreがGit履歴、IDEファイル、ローカルrenvライブラリ、ビルド成果物をDockerコンテキストから除外する。

失敗時: Dockerビルドが不要なファイルをコピーし続ける場合、.dockerignoreがDockerfileと同じディレクトリにあり、正しいグロブパターンを使用していることを確認する。

ステップ4: ビルドとテスト

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

期待結果: コンテナが正しいRバージョンですべてのパッケージが利用可能な状態で起動する。sessionInfo()の出力で期待されるRバージョンが確認できる。

失敗時: ビルドログでシステム依存関係のエラーを確認する。不足している-devパッケージをapt-get installレイヤーに追加する。

ステップ5: 本番環境向け最適化

本番デプロイにはマルチステージビルドを使用する:

# ビルドステージ
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()"

# ランタイムステージ
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

# ソースをマウントした開発コンテナ
docker run --rm -it -v $(pwd):/workspace r-project:latest R

# Plumber APIサービス
docker run -d -p 8000:8000 r-api:latest

# Shinyアプリ
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 репозиторий

pjt222/agent-almanac
Путь: i18n/ja/skills/create-r-dockerfile
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Похожие навыки

content-collections

Мета

Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.

Просмотреть навык

polymarket

Мета

Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.

Просмотреть навык

creating-opencode-plugins

Мета

Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.

Просмотреть навык

sglang

Мета

SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

Просмотреть навык