Files
clickstream-ch-kafka-supers…/generator/Dockerfile
T
ddadminandDmitry Dementiev e8d1c9efa9 feat(infra): добавлен автономный генератор событий для Kafka
- Зачем:
  - нужен постоянный поток данных для демонстрации работы стека
  - текущий batch-загрузчик не позволяет показать streaming-сценарии
- Что:
  - добавлен сервис generator с режимом steady (Poisson-интенсивность)
  - генератор публикует в 4 топика: browser/location/device/geo_events
  - сохраняются связи event_id и click_id между событиями
  - сборка через uv для скорости и компактности образа
  - добавлены команды generator-* в Makefile
  - комплексные тесты: валидация, статистика, формат сообщений
- Проверка:
  - `docker run --rm -v $(pwd)/..:/workspace -w /workspace/generator generator:test python test_comprehensive.py` — 8/8 тестов
  - `make generator-up` — 3 тика без ошибок, отправлено 2904 сообщения
2026-06-09 17:27:01 +03:00

27 lines
775 B
Docker

FROM python:3.12-slim
# Установка uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
WORKDIR /app
# Копируем зависимости отдельно для кэширования слоёв
COPY requirements.txt .
# Установка зависимостей через uv (компактный venv)
RUN uv venv /app/.venv && \
uv pip install --python /app/.venv/bin/python -r requirements.txt
# Копируем код
COPY generator.py .
# Не-root пользователь для безопасности
RUN useradd -m -u 1000 generator && chown -R generator:generator /app
USER generator
# Активируем venv через PATH
ENV PATH="/app/.venv/bin:$PATH"
# Запуск генератора
CMD ["python", "generator.py"]