MCP HubMCP Hub
스킬 목록으로 돌아가기

setup-docker-compose

pjt222
업데이트됨 2 days ago
7 조회
17
2
17
GitHub에서 보기
문서aiapimcpdata

정보

이 스킬은 다중 컨테이너 R 개발 환경을 위해 Docker Compose를 구성하며, 서비스 정의, 볼륨, 네트워킹, 환경 변수를 처리합니다. 데이터베이스나 API 같은 서비스와 함께 R을 실행하거나 재현 가능한 개발 설정을 만들 때 사용하세요. 컨테이너 오케스트레이션과 개발 및 프로덕션 환경 간의 구성 관리를 지원합니다.

빠른 설치

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/setup-docker-compose

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Set Up Docker Compose

Configure Docker Compose for R dev + deployment envs.

When Use

  • Running R alongside other services (databases, APIs)
  • Setting up reproducible dev env
  • Orchestrating R-based MCP server container
  • Managing env vars + volume mounts

Inputs

  • Required: Dockerfile for R service
  • Required: Project dir to mount
  • Optional: Additional services (database, cache, web server)
  • Optional: Env var config

Steps

Step 1: Create 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

Got: docker-compose.yml file exists with R service defined, volume mounts for project + renv cache, env vars for R library paths.

If fail: YAML syntax invalid? Validate with docker compose config. Indentation must use spaces (not tabs), all string values with special chars quoted.

Step 2: Add Additional Services (If Needed)

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:

Got: Additional service (e.g., PostgreSQL) defined with own volume, env vars, port mapping. R service has depends_on referencing new service.

If fail: Database service fails to start? Check docker compose logs postgres for init errors. Verify env vars like POSTGRES_PASSWORD_FILE point to valid secrets or switch to POSTGRES_PASSWORD for dev.

Step 3: Configure Networking

For services needing localhost access (MCP servers).

services:
  r-dev:
    network_mode: "host"

For isolated networking.

services:
  r-dev:
    networks:
      - app-network
    ports:
      - "3000:3000"

networks:
  app-network:
    driver: bridge

Got: Networking configured: host mode for services needing localhost (MCP servers), or bridge with explicit port mappings for isolated services.

If fail: Services cannot communicate? Verify same network. With bridge, use service names as hostnames (postgres not localhost). With host mode, use localhost, ensure ports do not conflict.

Step 4: Manage Environment Variables

Make .env file (git-ignored).

R_VERSION=4.5.0
GITHUB_PAT=your_token_here

Reference in compose.

services:
  r-dev:
    build:
      args:
        R_VERSION: ${R_VERSION}
    env_file:
      - .env

Got: .env file exists (git-ignored) with project-specific variables, docker-compose.yml references via env_file or variable interpolation (${VAR}).

If fail: Variables not resolving? Ensure .env in same dir as docker-compose.yml. Run docker compose config to see resolved config with all vars expanded.

Step 5: Build and Run

# 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

Got: All services start. R session accessible.

If fail: Check docker compose logs for startup errors. Common: port conflicts, missing env vars.

Step 6: Create Override for Development

Make docker-compose.override.yml for local dev settings.

services:
  r-dev:
    volumes:
      - /path/to/local/packages:/extra-packages
    environment:
      - DEBUG=true

Auto merged with docker-compose.yml.

Got: docker-compose.override.yml exists with dev-specific settings (extra volumes, debug flags), auto applied when running docker compose up.

If fail: Overrides not taking effect? Verify filename exactly docker-compose.override.yml. Run docker compose config to confirm merge. For explicit override files, use docker compose -f docker-compose.yml -f custom-override.yml up.

Checks

  • docker compose build completes without errors
  • docker compose up starts all services
  • Volume mounts share files between host + container
  • Env vars available inside containers
  • Services can communicate with each other
  • docker compose down cleanly stops everything

Pitfalls

  • Volume mount permissions: Linux containers may create files as root. Use user: directive or fix permissions.
  • Port conflicts: Check for services already using same ports on host
  • Docker Desktop vs CLI: docker compose (v2) vs docker-compose (v1). Use v2.
  • WSL path mounts: Use /mnt/c/... paths when mounting Windows dirs from WSL
  • Named volumes vs bind mounts: Named volumes persist across rebuilds; bind mounts reflect host changes immediately

See Also

  • create-r-dockerfile - create Dockerfile compose references
  • containerize-mcp-server - compose config for MCP servers
  • optimize-docker-build-cache - speed up compose builds

GitHub 저장소

pjt222/agent-almanac
경로: i18n/caveman/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

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 워크플로우를 개발할 때 활용하세요.

스킬 보기