Полная поддержка контейнеризации тестов с использованием Docker и Docker Compose.
- Быстрый старт
- Требования
- Структура файлов
- Конфигурация
- Запуск тестов
- Просмотр отчетов
- Troubleshooting
Windows:
# Скачайте и установите Docker Desktop
# https://www.docker.com/products/docker-desktopmacOS:
brew install --cask dockerLinux (Ubuntu):
sudo apt update
sudo apt install docker.io docker-compose
sudo usermod -aG docker $USER
# Перелогиньтесь после этогоСоздайте директорию и поместите туда ваши Kafka сертификаты:
mkdir kafka_key
# Скопируйте файлы:
# - kafka.truststore.jks
# - kafka.keystore.p12Создайте файл .env в корне проекта:
# Пароли для SSL сертификатов
KAFKA_SSL_TRUSTSTORE_PASSWORD=ваш_пароль
KAFKA_SSL_KEYSTORE_PASSWORD=ваш_пароль
# Пароли для API
KAFKA_REST_API_PASSWORD=ваш_пароль
KAFKA_SCHEMA_REGISTRY_PASSWORD=ваш_пароль
# Путь к сертификатам (опционально)
KAFKA_CERTS_PATH=./kafka_key# Все тесты последовательно
./docker/docker-run.sh
# Только smoke тесты
./docker/docker-run.sh --smoke
# Параллельное выполнение
./docker/docker-run.sh --parallel
# С пересборкой образа
./docker/docker-run.sh --build- Docker: 20.10+
- Docker Compose: 2.0+
- Память: минимум 4GB RAM для контейнера
- Диск: 2GB свободного места
docker/
├── Dockerfile # Многоступенчатая сборка образа
├── docker-compose.yml # Конфигурация сервисов
├── docker-run.sh # Скрипт запуска (Linux/macOS)
└── README.md # Эта документация
.dockerignore # Игнорируемые файлы при сборке
Двухступенчатая сборка:
Этап 1 (Builder):
- Базовый образ:
maven:3.9-eclipse-temurin-17 - Загрузка зависимостей
- Компиляция проекта
Этап 2 (Runtime):
- Базовый образ:
eclipse-temurin:17-jre-alpine - Минимальный размер образа
- Безопасность (non-root пользователь)
Запускает все тесты последовательно:
docker-compose -f docker/docker-compose.yml run kafka-testsТолько smoke тесты:
docker-compose -f docker/docker-compose.yml run kafka-tests-smokeПараллельное выполнение (8 потоков):
docker-compose -f docker/docker-compose.yml run kafka-tests-parallelСервер Allure отчетов:
docker-compose -f docker/docker-compose.yml up -d allure-reportВсе тесты:
./docker/docker-run.shSmoke тесты:
./docker/docker-run.sh --smokeПараллельное выполнение:
./docker/docker-run.sh --parallelПересборка образа:
./docker/docker-run.sh --buildОчистка volumes:
./docker/docker-run.sh --cleanБез вывода логов:
./docker/docker-run.sh --no-logsЗапуск конкретных тестов:
docker-compose -f docker/docker-compose.yml run kafka-tests \
test -Dgroups=producerЗапуск с переменными:
docker-compose -f docker/docker-compose.yml run \
-e THREAD_COUNT=16 \
kafka-tests-parallelЗапуск в фоне:
docker-compose -f docker/docker-compose.yml up -d kafka-tests
docker-compose -f docker/docker-compose.yml logs -f kafka-testsЗапуск сервера:
./docker/docker-run.sh --report
# или
docker-compose -f docker/docker-compose.yml up -d allure-reportДоступ:
- URL: http://localhost:5050
- UI: http://localhost:5252
- Логин:
admin - Пароль:
admin
Остановка:
docker-compose -f docker/docker-compose.yml down allure-reportРезультаты сохраняются в:
target/
├── allure-results/ # Сырые результаты
├── allure-reports/ # Сгенерированные отчеты
└── logs/ # Логи выполнения
Реального времени:
docker-compose -f docker/docker-compose.yml logs -f kafka-testsПоследние 100 строк:
docker-compose -f docker/docker-compose.yml logs --tail=100 kafka-tests# Остановить все
docker-compose -f docker/docker-compose.yml down
# С удалением volumes
docker-compose -f docker/docker-compose.yml down -v
# Остановить конкретный сервис
docker-compose -f docker/docker-compose.yml stop allure-reportdocker-compose -f docker/docker-compose.yml psСимптомы:
OutOfMemoryError: Java heap space
Решение:
Увеличьте память в docker-compose.yml:
deploy:
resources:
limits:
memory: 8GИли через переменную окружения:
export MAVEN_OPTS="-Xmx4096m"
./docker/docker-run.shСимптомы:
FileNotFoundException: /app/kafka_key/kafka.truststore.jks
Решение:
- Проверьте путь к сертификатам:
ls -la kafka_key/- Убедитесь, что путь указан правильно в
.env:
KAFKA_CERTS_PATH=./kafka_key- Проверьте монтирование в
docker-compose.yml:
volumes:
- ${KAFKA_CERTS_PATH:-./kafka_key}:/app/kafka_key:roСимптомы:
Permission denied: /app/target/logs
Решение: Дайте права на запись:
chmod -R 777 target/Или запустите от своего пользователя:
docker-compose -f docker/docker-compose.yml run \
-u $(id -u):$(id -g) \
kafka-testsСимптомы:
ERROR: failed to solve: process "/bin/sh -c mvn dependency:go-offline -B"
Решение:
- Проверьте подключение к интернету
- Очистите Docker кеш:
docker builder prune -a- Пересоберите с --no-cache:
docker-compose -f docker/docker-compose.yml build --no-cacheСимптомы: Тесты не завершаются долгое время
Решение:
- Увеличьте таймауты:
docker-compose -f docker/docker-compose.yml run \
-e TEST_TIMEOUT_SECONDS=120 \
kafka-tests- Проверьте подключение к Kafka:
docker-compose -f docker/docker-compose.yml run kafka-tests \
bash -c "curl -v KAFKA_BOOTSTRAP_SERVERS"Симптомы:
ERROR: version is obsolete
Решение: Обновите Docker Compose:
# Linux
sudo apt update
sudo apt install docker-compose-plugin
# macOS
brew upgrade docker-compose
# Windows
# Обновите Docker Desktop❌ Плохо:
environment:
- KAFKA_SSL_TRUSTSTORE_PASSWORD=mypassword123✅ Хорошо:
environment:
- KAFKA_SSL_TRUSTSTORE_PASSWORD=${KAFKA_SSL_TRUSTSTORE_PASSWORD}Для продакшена используйте Docker Swarm secrets:
secrets:
kafka_truststore_pass:
external: trueВсегда устанавливайте лимиты:
deploy:
resources:
limits:
cpus: '4'
memory: 4G1. Используйте .dockerignore: Уже настроено в проекте
2. Кешируйте Maven зависимости:
volumes:
- maven-cache:/root/.m23. Используйте BuildKit:
DOCKER_BUILDKIT=1 docker build -t kafka-tests .1. Параллельное выполнение:
./docker/docker-run.sh --parallel2. Увеличьте ресурсы:
deploy:
resources:
limits:
cpus: '8'
memory: 8G3. Используйте SSD: Убедитесь, что Docker использует SSD диск
- name: Run tests in Docker
run: |
echo "${{ secrets.KAFKA_TRUSTSTORE_BASE64 }}" | base64 -d > kafka_key/kafka.truststore.jks
echo "${{ secrets.KAFKA_KEYSTORE_BASE64 }}" | base64 -d > kafka_key/kafka.keystore.p12
./docker/docker-run.sh --paralleltest:
image: docker:latest
services:
- docker:dind
script:
- docker-compose -f docker/docker-compose.yml run kafka-testsstage('Run Tests') {
steps {
sh './docker/docker-run.sh --parallel'
}
}- Официальная документация Docker
- Docker Compose документация
- Best practices для Dockerfile
- Allure Docker Service
# Удалить все неиспользуемые образы
docker image prune -a
# Посмотреть размер образов
docker images | grep kafka-test
# Зайти в контейнер
docker-compose -f docker/docker-compose.yml run kafka-tests bash
# Скопировать файл из контейнера
docker cp kafka-test-runner:/app/target/logs/test.log ./
# Мониторинг ресурсов
docker stats kafka-test-runner
# Экспорт образа
docker save kafka-test-framework:latest | gzip > kafka-tests.tar.gz
# Импорт образа
docker load < kafka-tests.tar.gzВерсия документации: 1.0.0
Дата обновления: 2026-01-13