컨텐츠로 건너뛰기

Docker 지원

Docker는 OpenCode를 실행하기 위한 가볍고 격리된 환경을 제공하여 DevOps 워크플로우, CI/CD 파이프라인 및 일관된 개발 환경에 이상적입니다.

빠른 시작

Docker에서 OpenCode를 실행하는 가장 간단한 방법은 공식 이미지를 사용하는 것입니다:

docker run -it -v $(pwd):/app anomalyco/opencode:latest

이 명령어는:

  • 대화형 모드(-it)로 OpenCode를 실행합니다
  • 현재 디렉토리($(pwd))를 컨테이너의 /app에 마운트합니다
  • OpenCode 이미지의 최신 버전을 사용합니다

Docker Compose

보다 복잡한 설정의 경우 Docker Compose를 사용할 수 있습니다. docker-compose.yml 파일을 생성하세요:

version: '3'
services:
  opencode:
    image: anomalyco/opencode:latest
    volumes:
      - .:/app
      - opencode-config:/root/.config/opencode
    working_dir: /app
    tty: true
    stdin_open: true

volumes:
  opencode-config:

그런 다음 컨테이너를 시작하세요:

docker-compose up -d

DevOps 통합

CI/CD 파이프라인

코드 리뷰와 개선을 자동화하기 위해 CI/CD 파이프라인에서 OpenCode를 사용할 수 있습니다:

docker run --rm -v $(pwd):/app anomalyco/opencode:latest review --auto-apply

프리커밋 후크

OpenCode를 프리커밋 워크플로우에 통합하세요:

# .pre-commit-config.yaml
repos:
-   repo: local
    hooks:
    -   id: opencode-review
        name: OpenCode Review
        entry: docker run --rm -v $(pwd):/app anomalyco/opencode:latest review
        language: system
        types: [file]
        files: \.(js|ts|py|go|java)$

구성

환경 변수

환경 변수를 사용하여 OpenCode를 구성할 수 있습니다:

docker run -it \
  -v $(pwd):/app \
  -e OPENCODE_API_KEY=your-api-key \
  -e OPENCODE_MODEL=gpt-4 \
  anomalyco/opencode:latest

지속적인 구성

컨테이너 실행 간에 구성을 지속시키려면 구성 디렉토리를 마운트하세요:

docker run -it \
  -v $(pwd):/app \
  -v ~/.config/opencode:/root/.config/opencode \
  anomalyco/opencode:latest

고급 사용법

커스텀 Dockerfile

보다 세밀한 제어를 위해 커스텀 Dockerfile을 생성하세요:

FROM anomalyco/opencode:latest

# 추가 종속성 설치
RUN apt-get update && apt-get install -y git

# 커스텀 구성 설정
COPY opencode.config.json /root/.config/opencode/config.json

WORKDIR /app

빌드하고 실행하세요:

docker build -t my-opencode .
docker run -it -v $(pwd):/app my-opencode

다단계 빌드

CI/CD 환경의 경우 이미지를 작게 유지하기 위해 다단계 빌드를 사용하세요:

# 빌드 단계
FROM node:18 as build
WORKDIR /app
COPY . .
RUN npm install && npm run build

# 프로덕션 단계
FROM anomalyco/opencode:latest
WORKDIR /app
COPY --from=build /app/dist /app/dist

# OpenCode 분석 실행
CMD ["opencode", "review", "./dist"]

문제 해결

권한 문제

마운트된 볼륨에서 권한 문제가 발생하는 경우:

docker run -it \
  -v $(pwd):/app \
  -u $(id -u):$(id -g) \
  anomalyco/opencode:latest

네트워크 액세스

API 호출을 위해 OpenCode가 인터넷에 액세스할 수 있도록 하려면:

docker run -it \
  --network=host \
  -v $(pwd):/app \
  anomalyco/opencode:latest

모범 사례

  • 재현 가능한 빌드를 위해 latest 대신 특정 이미지 태그를 사용하세요
  • 성능을 향상시키기 위해 필요한 디렉토리만 마운트하세요
  • 여러 서비스를 포함하는 복잡한 설정에는 Docker Compose를 사용하세요
  • 프로덕션 환경에 리소스 제한을 설정하세요
  • 컨테이너 오케스트레이션을 위해 헬스 체크를 구현하세요

지원되는 태그

OpenCode Docker 이미지는 다음 태그로 사용할 수 있습니다:

  • latest: 최신 안정 릴리스
  • vX.Y.Z: 특정 버전(예: v1.0.0)
  • dev: 개발 빌드

예: GitLab CI 통합

# .gitlab-ci.yml
stages:
  - code-review

opencode-review:
  stage: code-review
  image: anomalyco/opencode:latest
  script:
    - opencode review --auto-apply
  only:
    - merge_requests
  artifacts:
    paths:
      - opencode-report.json

예: GitHub Actions 통합

# .github/workflows/opencode-review.yml
name: OpenCode Review

on:
  pull_request:
    branches: [ main ]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run OpenCode Review
        run: |
          docker run --rm -v $(pwd):/app anomalyco/opencode:latest review --auto-apply
      - name: Upload report
        uses: actions/upload-artifact@v3
        with:
          name: opencode-report
          path: opencode-report.json