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