- Отдельная PostgreSQL в tmpfs (RAM) - Отдельный Tracker на порту 8101 - Полная изоляция от прода - ./test.sh для запуска
46 lines
1.5 KiB
YAML
46 lines
1.5 KiB
YAML
# Тестовое окружение Team Board
|
|
# Поднимает полный стек на изолированной БД и портах.
|
|
#
|
|
# Использование:
|
|
# ./test.sh — поднять, прогнать тесты, убить
|
|
# docker compose -f docker-compose.test.yml up -d — поднять вручную
|
|
# docker compose -f docker-compose.test.yml down -v — убить
|
|
#
|
|
# Порты (тестовые):
|
|
# Tracker API: 8101
|
|
# PostgreSQL: 5433 (изолированный)
|
|
|
|
services:
|
|
db-test:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_DB: team_board_test
|
|
POSTGRES_USER: team_board
|
|
POSTGRES_PASSWORD: team_board
|
|
ports:
|
|
- "5433:5432"
|
|
tmpfs:
|
|
- /var/lib/postgresql/data # RAM-диск — быстро, дропается при down
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U team_board -d team_board_test"]
|
|
interval: 1s
|
|
timeout: 3s
|
|
retries: 15
|
|
|
|
tracker-test:
|
|
build: ./tracker
|
|
ports:
|
|
- "8101:8100"
|
|
environment:
|
|
TRACKER_DATABASE_URL: postgresql+asyncpg://team_board:team_board@db-test:5432/team_board_test
|
|
TRACKER_ENV: dev
|
|
TRACKER_JWT_SECRET: test-secret
|
|
depends_on:
|
|
db-test:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python3 -c \"import socket; s=socket.create_connection(('localhost',8100),2); s.close()\""]
|
|
interval: 2s
|
|
timeout: 3s
|
|
retries: 15
|