version: '3.8' services: # PostgreSQL for event persistence postgres: image: postgres:16-alpine container_name: svrnty-postgres ports: - "5432:5432" environment: POSTGRES_USER: svrnty POSTGRES_PASSWORD: svrnty_dev POSTGRES_DB: svrnty_events volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U svrnty"] interval: 10s timeout: 5s retries: 5 networks: - svrnty-network # RabbitMQ for cross-service messaging rabbitmq: image: rabbitmq:3-management-alpine container_name: svrnty-rabbitmq ports: - "5672:5672" # AMQP port - "15672:15672" # Management UI environment: RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest RABBITMQ_DEFAULT_VHOST: / volumes: - rabbitmq_data:/var/lib/rabbitmq healthcheck: test: rabbitmq-diagnostics -q ping interval: 10s timeout: 5s retries: 5 networks: - svrnty-network # pgAdmin for PostgreSQL management (optional) pgadmin: image: dpage/pgadmin4:latest container_name: svrnty-pgadmin ports: - "5050:80" environment: PGADMIN_DEFAULT_EMAIL: admin@svrnty.local PGADMIN_DEFAULT_PASSWORD: admin volumes: - pgadmin_data:/var/lib/pgadmin depends_on: - postgres networks: - svrnty-network profiles: - tools volumes: postgres_data: driver: local rabbitmq_data: driver: local pgadmin_data: driver: local networks: svrnty-network: driver: bridge