Skip to content

Latest commit

 

History

History
271 lines (195 loc) · 8.46 KB

File metadata and controls

271 lines (195 loc) · 8.46 KB

🤖 opencode-docker

Imagen Docker personalizada para opencode — preconfigurada con skills, slash commands, servidores MCP y un agente de coding completamente listo para usar.

Docker Pulls GitHub Container Registry Release License

English · Español


¿Qué es esto?

opencode es un asistente de código con IA que corre en la terminal. Esta imagen trae una configuración lista y opinionada encima de él:

  • 🧠 AGENTS.md — system prompt personalizado con la persona arquitecta Kerrigan
  • Skills — más de 40 packs de instrucciones especializadas (SDD, Cloudflare, Angular, React, Docker y más)
  • 🔧 Slash commands — comandos /sdd-* del workflow SDD preconfigurados
  • 🔌 Servidores MCP — Context7, GitHub Copilot, Playwright, Chrome DevTools, gh_grep y más
  • 🔒 Non-root — corre como usuario opencode (uid 1001)
  • 🏗️ Multi-archlinux/amd64 y linux/arm64

Inicio rápido

docker run --rm -it \
  -v "$(pwd)":/workspace \
  -e GITHUB_TOKEN=tu_token \
  -e CONTEXT7_API_KEY=tu_key \
  yacosta738/opencode:latest

Monta tu directorio actual como workspace y te lleva directo al TUI de opencode.


Imágenes disponibles

Registry Imagen
Docker Hub yacosta738/opencode:latest
GHCR ghcr.io/dallay/opencode:latest

Tags

Tag Descripción
latest Última versión estable
1.0.0 Versión específica
v1 Alias de versión mayor
<git-sha> Build de commit exacto

Configuración

Variables de entorno

Todas las API keys y tokens se inyectan en tiempo de ejecución — nada está dentro de la imagen.

Variable Requerida Descripción
GITHUB_TOKEN Recomendada MCP de GitHub Copilot + autenticación de gh CLI
CONTEXT7_API_KEY Opcional MCP de documentación Context7
STITCH_API_KEY Opcional MCP de Google Stitch
SONARQUBE_TOKEN Opcional MCP de SonarQube
SONARQUBE_ORG Opcional Organización de SonarQube

Copia .env.example a .env y completa tus valores:

cp .env.example .env
# edita .env con tus claves

Luego ejecuta con --env-file:

docker run --rm -it \
  -v "$(pwd)":/workspace \
  --env-file .env \
  yacosta738/opencode:latest

Montar el workspace

El contenedor usa /workspace como directorio de trabajo. Monta tu proyecto ahí:

# Directorio actual
-v "$(pwd)":/workspace

# Proyecto específico
-v /ruta/a/mi-proyecto:/workspace

# Directorio home (todos los proyectos)
-v "$HOME/Dev":/workspace

Sesiones persistentes

opencode guarda el historial de sesiones en /home/opencode/.local/share/opencode. Monta un volumen para persistir las sesiones entre ejecuciones:

docker run --rm -it \
  -v "$(pwd)":/workspace \
  -v opencode-sessions:/home/opencode/.local/share/opencode \
  --env-file .env \
  yacosta738/opencode:latest

Skills incluidas

Las skills son packs de instrucciones especializadas que extienden las capacidades del agente. Viven en /home/opencode/.config/opencode/skills/.

Ver las 40+ skills
Categoría Skills
IA / Agentes agents-sdk, building-ai-agent-on-cloudflare, building-mcp-server-on-cloudflare
Arquitectura brainstorming, best-practices, frontend-design
Cloudflare cloudflare, workers-best-practices, wrangler, durable-objects
CI/CD github-actions, gh-fix-ci, gh-address-comments, github, pinned-tag, yeet, pr-creator
Workflow SDD sdd-init, sdd-explore, sdd-propose, sdd-spec, sdd-design, sdd-tasks, sdd-apply, sdd-verify, sdd-archive
Observabilidad sentry, grafana-dashboards
Web accessibility, seo, performance, core-web-vitals, web-quality-audit, webapp-testing
Bases de datos sql-optimization-patterns
Integraciones linear, notion-knowledge-capture, notion-meeting-intelligence, notion-research-documentation, notion-spec-to-implementation
Obsidian obsidian-cli, obsidian-markdown, obsidian-bases, json-canvas, defuddle
Tooling docker-expert, makefile, markdown-a11y, skill-creator, jules-cli

Servidores MCP incluidos

Los servidores MCP (Model Context Protocol) extienden el agente con herramientas en tiempo real.

Servidor Estado Descripción
context7 ✅ Activo Búsqueda de documentación de librerías actualizada
gh_grep ✅ Activo Búsqueda de patrones en código público de GitHub
chrome-devtools ✅ Activo Automatización de Chrome DevTools
playwright ✅ Activo Testing de navegador end-to-end
github ⚙️ Opcional Integración con GitHub Copilot (requiere GITHUB_TOKEN)
linear ⚙️ Opcional Gestión de proyectos en Linear
notion ⚙️ Opcional Integración con Notion
sonarqube ⚙️ Opcional Análisis de calidad de código
stitch ⚙️ Opcional Google Stitch
cloudflare-api ⚙️ Opcional API del dashboard de Cloudflare

Slash Commands

Los comandos /sdd-* preconfigurados implementan un workflow completo de Spec-Driven Development:

Comando Descripción
/sdd-init Inicializa el contexto SDD en un proyecto
/sdd-new Explora y propone un nuevo cambio
/sdd-ff Fast-forward: propuesta → spec → diseño → tareas
/sdd-continue Retoma desde la última fase completada
/sdd-apply Implementa las tareas
/sdd-verify Valida la implementación contra las specs
/sdd-archive Sincroniza specs y cierra el ciclo

Build local

git clone https://github.com/dallay/opencode-docker.git
cd opencode-docker

docker build \
  --build-arg OPENCODE_VERSION=1.4.3 \
  -t opencode:local \
  .

Para usar una versión diferente de opencode:

docker build \
  --build-arg OPENCODE_VERSION=1.5.0 \
  -t opencode:custom \
  .

Arquitectura

Dockerfile (multi-stage)
├── Stage 1: downloaderdebian:bookworm-slim
│   └── Descarga el binario de opencode desde GitHub releases
│       (detección de arch: x64 para amd64, arm64 para arm64)
└── Stage 2: runtimedebian:bookworm-slim
    ├── Dependencias runtime: git, curl, nodejs, npm, ca-certificates
    ├── Usuario non-root: opencode (uid 1001)
    ├── Binario: /usr/local/bin/opencode
    ├── Config: /home/opencode/.config/opencode/
    └── Workdir: /workspace

Versionado

Este repo usa Semantic Release con Conventional Commits:

Prefijo de commit Bump de versión
fix: Patch — 1.0.x
feat: Minor — 1.x.0
feat!: o BREAKING CHANGE Major — x.0.0

Cada push a main con commits releaseables automáticamente:

  1. Incrementa la versión y crea un GitHub Release
  2. Construye y publica la imagen multi-arch en Docker Hub y GHCR
  3. Ejecuta un escaneo de seguridad con Trivy y sube los resultados al tab de Security de GitHub

Seguridad

  • Todas las API keys se inyectan via variables de entorno — nunca dentro de la imagen
  • El contenedor corre como usuario non-root opencode (uid 1001)
  • Cada release se escanea con Trivy en busca de CVEs HIGH y CRITICAL
  • Los resultados son visibles en el tab de Security de GitHub

Contribuir

  1. Haz un fork del repo
  2. Aplica tus cambios usando conventional commits
  3. Abre un PR — el CI validará el build

Licencia

MIT — ver LICENSE


Hecho con ❤️ por Yuniel Acosta