跳转到内容

Docker 支持

Docker 为运行 OpenCode 提供了轻量级且隔离的环境,非常适合 DevOps 工作流、CI/CD 管道和一致的开发环境。

快速开始

在 Docker 中运行 OpenCode 最简单的方法是使用官方镜像:

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

此命令:

  • 以交互模式运行 OpenCode (-it)
  • 将当前目录 ($(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 审查
        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

网络访问

要允许 OpenCode 访问互联网进行 API 调用:

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 审查

on:
  pull_request:
    branches: [ main ]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 运行 OpenCode 审查
        run: |
          docker run --rm -v $(pwd):/app anomalyco/opencode:latest review --auto-apply
      - name: 上传报告
        uses: actions/upload-artifact@v3
        with:
          name: opencode-report
          path: opencode-report.json