Files
hyperswitch/loadtest/docker-compose.yaml

128 lines
2.9 KiB
YAML

version: "2"
networks:
loadtest_net:
services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: loadtest_router
networks:
- loadtest_net
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 5s
timeout: 5s
retries: 5
stripe-mock:
image: heyrutvik/stripe-mock:latest
networks:
- loadtest_net
redis-queue:
image: redis:7
networks:
- loadtest_net
router-server:
build:
context: ..
dockerfile: ./loadtest/Dockerfile
cpuset: "0"
volumes:
- ./config:/config
- ./logs.tmp:/app/logs
command:
- /bin/bash
- -c
- |
./diesel migration run
./router -f /config/development.toml
ports:
- "8080"
environment:
DATABASE_URL: postgres://postgres:postgres@db/loadtest_router
RUST_LOG: INFO
RUN_ENV: development
OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector:4317
networks:
- loadtest_net
healthcheck:
test: curl --fail http://router-server:8080/health || exit 1
interval: 5s
timeout: 5s
retries: 5
depends_on:
db:
condition: service_healthy
stripe-mock:
condition: service_started
redis-queue:
condition: service_started
influxdb:
condition: service_started
otel-collector:
condition: service_started
tempo:
condition: service_started
grafana:
condition: service_started
k6:
image: loadimpact/k6:latest
volumes:
- ./k6:/scripts
command: run /scripts/${LOADTEST_K6_SCRIPT}
networks:
- loadtest_net
environment:
- LOADTEST_RUN_NAME=${LOADTEST_RUN_NAME}
- K6_OUT=influxdb=http://influxdb:8086/scripts
depends_on:
router-server:
condition: service_healthy
influxdb:
image: influxdb:1.8
networks:
- loadtest_net
environment:
- INFLUXDB_DB=scripts
otel-collector:
image: otel/opentelemetry-collector:latest
command: --config=/etc/otel-collector.yaml
networks:
- loadtest_net
volumes:
- ./config/otel-collector.yaml:/etc/otel-collector.yaml
tempo:
image: grafana/tempo:latest
command: -config.file=/etc/tempo.yaml
volumes:
- ./config/tempo.yaml:/etc/tempo.yaml
- ./tempo.tmp:/tmp/tempo
networks:
- loadtest_net
grafana:
image: grafana/grafana:latest
ports:
- "3002:3000"
networks:
- loadtest_net
environment:
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_BASIC_ENABLED=false
volumes:
- ./grafana/dashboards:/var/lib/grafana/dashboards
- ./grafana/grafana-dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
- ./grafana/grafana-datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yaml