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

create-r-dockerfile

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

О программе

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

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

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 для установки этого навыка

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

造 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 репозиторий

pjt222/agent-almanac
Путь: i18n/wenyan-ultra/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, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

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