Деплой через Docker
Все агенты платформы запускаются в Docker-контейнерах. Dockerfile и docker-compose.yml включены в Agent Template.
Dockerfile
Стандартный Dockerfile из шаблона:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8080
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]
Не меняйте порт 8080 — оркестратор ожидает его.
docker-compose.yml
version: '3.8'
services:
agent:
build: .
ports:
- "8080:8080"
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
Сборка и запуск локально
# Сборка образа
docker build -t my-agent .
# Запуск с .env файлом
docker run -p 8080:8080 --env-file .env my-agent
# Или через docker-compose
docker-compose up --build
Проверка работоспособности
# Health check
curl http://localhost:8080/health
# Тестовый запрос
curl -X POST http://localhost:8080/run \
-H "Content-Type: application/json" \
-d '{"task_id": "test-001", "input": "тестовая задача"}'
Типичные проблемы
| Проблема | Решение |
|---|---|
| Порт занят | Измените хост-порт: -p 8081:8080 |
.env не найден | Проверьте путь, используйте --env-file .env из папки с файлом |
| Зависимости не ставятся | Обновите requirements.txt, пересоберите с --no-cache |
| Агент падает при старте | Проверьте логи: docker logs <container_id> |
Требования к образу
- Базовый образ:
python:3.11-slim(не alpine — могут быть проблемы с зависимостями) - Размер образа: не более 500 МБ
- Контейнер должен запускаться за 30 секунд