setup-docker-compose
정보
이 스킬은 다중 컨테이너 R 개발 환경을 위해 Docker Compose를 구성하며, 서비스 정의, 볼륨, 네트워킹, 환경 변수를 처리합니다. R을 데이터베이스나 API와 함께 실행하거나, 재현 가능한 환경을 설정하거나, R 기반 MCP 서버를 조율할 때 사용하세요. 컨테이너화된 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/setup-docker-composeClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
設置 Docker Compose
為 R 開發與部署環境配置 Docker Compose。
適用時機
- 與其他服務(資料庫、API)一同執行 R
- 設置可重現之開發環境
- 編排 R 為基礎之 MCP 伺服器容器
- 管理環境變數與卷掛載
輸入
- 必要:R 服務之 Dockerfile
- 必要:欲掛載之項目目錄
- 選擇性:附加服務(資料庫、快取、網頁伺服器)
- 選擇性:環境變數配置
步驟
步驟一:建立 docker-compose.yml
version: '3.8'
services:
r-dev:
build:
context: .
dockerfile: Dockerfile
container_name: r-dev
image: r-dev:latest
volumes:
- .:/workspace
- renv-cache:/workspace/renv/cache
stdin_open: true
tty: true
environment:
- TERM=xterm-256color
- R_LIBS_USER=/workspace/renv/library
- RENV_PATHS_CACHE=/workspace/renv/cache
command: R
restart: unless-stopped
volumes:
renv-cache:
driver: local
預期: docker-compose.yml 文件已存,定義 R 服務含項目目錄與 renv 快取之卷掛載及 R 函式庫路徑之環境變數。
失敗時: 若 YAML 語法無效,以 docker compose config 驗證。確保縮排用空格(非 tab)且所有含特殊字元之字串值已加引號。
步驟二:加入附加服務(如需)
services:
r-dev:
# ... as above
depends_on:
- postgres
environment:
- DB_HOST=postgres
- DB_PORT=5432
postgres:
image: postgres:16
container_name: r-postgres
environment:
POSTGRES_DB: analysis
POSTGRES_USER: ruser
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
renv-cache:
pgdata:
預期: 附加服務(如 PostgreSQL)已定義含其自有卷、環境變數與連接埠對應。R 服務之 depends_on 參照新服務。
失敗時: 若資料庫服務啟動失敗,檢查 docker compose logs postgres 以查初始化錯誤。驗證 POSTGRES_PASSWORD_FILE 之環境變數指向有效之 secrets 或開發用切至 POSTGRES_PASSWORD。
步驟三:配置網路
對需 localhost 存取(如 MCP 伺服器)之服務:
services:
r-dev:
network_mode: "host"
對隔離網路:
services:
r-dev:
networks:
- app-network
ports:
- "3000:3000"
networks:
app-network:
driver: bridge
預期: 網路已適切配置:對需 localhost 存取之服務(MCP 伺服器)用 host 模式,或對隔離服務用橋接網路含明確連接埠對應。
失敗時: 若服務無法通訊,驗證其於同網路。橋接網路時用服務名作主機名(如 postgres 而非 localhost)。host 模式時用 localhost 並確保連接埠不衝突。
步驟四:管理環境變數
建立 .env 文件(git 已忽略):
R_VERSION=4.5.0
GITHUB_PAT=your_token_here
於 compose 中參照:
services:
r-dev:
build:
args:
R_VERSION: ${R_VERSION}
env_file:
- .env
預期: .env 文件已存(git 已忽略),含項目特定變數,docker-compose.yml 透過 env_file 或變數插值(${VAR})參照之。
失敗時: 若變數未解析,確保 .env 文件與 docker-compose.yml 於同目錄。執行 docker compose config 以見所有變數已展開之解析配置。
步驟五:建構並執行
# Build images
docker compose build
# Start services
docker compose up -d
# Attach to R session
docker compose exec r-dev R
# View logs
docker compose logs -f r-dev
# Stop services
docker compose down
預期: 所有服務啟動。R 會話可存取。
失敗時: 檢查 docker compose logs 以查啟動錯誤。常見:連接埠衝突、缺環境變數。
步驟六:為開發建立覆蓋
建立 docker-compose.override.yml 以提供本地開發設定:
services:
r-dev:
volumes:
- /path/to/local/packages:/extra-packages
environment:
- DEBUG=true
此自動與 docker-compose.yml 合併。
預期: docker-compose.override.yml 文件已存,含開發特定設定(額外卷、除錯旗標),執行 docker compose up 時自動套用。
失敗時: 若覆蓋無效,驗證文件名確為 docker-compose.override.yml。執行 docker compose config 以確認合併。對明確之覆蓋文件用 docker compose -f docker-compose.yml -f custom-override.yml up。
驗證
-
docker compose build無錯完成 -
docker compose up啟動所有服務 - 卷掛載正確於主機與容器間共享文件
- 環境變數於容器內可用
- 服務間可相互通訊
-
docker compose down乾淨停止所有
常見陷阱
- 卷掛載權限:Linux 容器可能以 root 建立文件。用
user:指令或修權限。 - 連接埠衝突:檢查主機上已用相同連接埠之服務
- Docker Desktop 對 CLI:
docker compose(v2)對docker-compose(v1)。用 v2。 - WSL 路徑掛載:自 WSL 掛載 Windows 目錄時用
/mnt/c/...路徑 - 命名卷對綁定掛載:命名卷跨重建持久;綁定掛載立即反映主機變更
相關技能
create-r-dockerfile- 建立 compose 參照之 Dockerfilecontainerize-mcp-server- MCP 伺服器之 compose 配置optimize-docker-build-cache- 加速 compose 建構
GitHub 저장소
연관 스킬
railway-docs
문서이 스킬은 Railway의 기능, 작동 방식 또는 특정 문서 URL에 대한 질문에 답하기 위해 최신 Railway 문서를 가져옵니다. 개발자들이 Railway의 공식 소스로부터 정확하고 최신 정보를 직접 받을 수 있도록 보장합니다. 사용자가 Railway의 작동 방식을 묻거나 Railway 문서를 참조할 때 사용하세요.
n8n-code-python
문서이 Claude Skill은 n8n의 Code 노드에서 Python 코드를 작성할 때 전문적인 지침을 제공하며, 특히 Python 표준 라이브러리 사용과 n8n의 특수 구문인 `_input`, `_json`, `_node` 작업에 중점을 둡니다. 이는 개발자가 n8n 내에서 Python의 제한 사항을 이해하도록 돕고, 대부분의 워크플로에는 JavaScript 사용을 권장하면서도 특정 데이터 변환 요구사항에 대한 Python 솔루션을 제안합니다.
archon
문서Archon 스킬은 REST API를 통해 RAG 기반 시맨틱 검색과 프로젝트 관리를 제공합니다. 이 스킬을 사용하여 문서 검색, 계층적 프로젝트/태스크 관리, 문서 업로드 기능을 갖춘 지식 검색을 수행할 수 있습니다. 외부 문서를 검색할 때는 다른 소스를 사용하기 전에 항상 Archon을 최우선으로 활용하세요.
n8n-code-javascript
문서이 Claude Skill은 n8n의 Code 노드에서 JavaScript 코드 작성에 대한 전문적인 지침을 제공합니다. `$input`/`$json` 변수, HTTP 헬퍼, DateTime 처리와 같은 필수적인 n8n 특정 구문을 다루며 일반적인 오류를 해결합니다. Code 노드에서 사용자 정의 JavaScript 처리가 필요한 n8n 워크플로우를 개발할 때 활용하세요.
