Перейти к основному содержимому

Деплой через 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 секунд