Docker Executor
Docker executor umożliwia uruchamianie zadań w izolowanych kontenerach Docker, zapewniając powtarzalne i bezpieczne środowisko wykonania dla różnych typów projektów.
Przegląd
Docker executor automatycznie:
- Tworzy i konfiguruje kontenery Docker dla zadań
- Montuje wymagane credentials i konfiguracje
- Instaluje dependencies (PHP, Composer, Node.js, Claude CLI)
- Klonuje repozytoria projektów
- Wykonuje zadania w izolowanych środowiskach
- Automatycznie czyści kontenery po zakończeniu
Obsługiwane projekty
Angular
- Image:
node:18-alpine - Repository: Klonowane przez
git clonew kontenerze - Dependencies: npm install
- Git operations: Wykonywane wewnątrz kontenera
Laravel
- Image:
php:8.2-fpm-alpine - Repository: Klonowane przez
git clonew kontenerze - Dependencies: PHP extensions, Composer, npm
- Database: MySQL container z dedykowanymi volumes
- Git operations: Wykonywane wewnątrz kontenera
Workflow wykonania
1. Przygotowanie kontenera
- Template setup - Kopiowanie docker-compose templates i scripts
- Resource creation - Tworzenie konfiguracji .claude/.gemini/.codex
- Docker compose up - Uruchomienie kontenerów
2. Instalacja dependencies
Wykonywane przez start.sh w następującej kolejności:
bash
# Podstawowe pakiety systemowe
# Klonowanie repozytorium
# Setup specyficzny dla projektu
# Instalacja Claude CLI
# Instalacja Gemini CLI
# Setup symlinks3. Monitoring i wykonanie
- STATUS:::READY - Kontener sygnalizuje gotowość
- Claude execution - Delegacja do Claude executor z
execFunc - Docker exec - Komendy wykonywane przez
docker exec - Monitoring - Śledzenie statusu kontenera
Debugging
Logi kontenerów
bash
# Status kontenera
docker ps -a --filter name=${TASK_ID}-session-${SESSION_NUMBER}
# Logi kontenera
docker logs ${TASK_ID}-session-${SESSION_NUMBER}
# Exec do kontenera
docker exec -it ${TASK_ID}-session-${SESSION_NUMBER} bashPliki diagnostyczne
- container.log -
/app/project/.spec/${TASK_ID}_${SESSION_NUMBER}/container.log - output.json -
/app/worker/.spec/${TASK_ID}_${SESSION_NUMBER}/output.json
Bezpieczeństwo
Izolacja
- Każde zadanie ma własny kontener z unikalną nazwą
- Dedicated volumes dla MySQL databases
- Read-only mounting dla credentials
- Automatyczny cleanup po zakończeniu
Rozwiązywanie problemów
Claude CLI nie działa
- Sprawdź czy npm jest zainstalowany:
docker exec container npm --version - Sprawdź PATH:
docker exec container echo $PATH - Sprawdź instalację Claude:
docker exec container claude --version
Git push fails
- Sprawdź credentials:
docker exec container ls -la ~/.ssh/ - Sprawdź git config:
docker exec container git config --list - Sprawdź remote:
docker exec container git remote -v
Kontener nie startuje
- Sprawdź docker logs:
docker logs ${TASK_ID}-session-${SESSION_NUMBER} - Sprawdź compose file w
/tmp/docker-compose-${TASK_ID}-session-${SESSION_NUMBER}.yml - Sprawdź resource mounting i permissions