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 сообщения
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user