Files
hyperswitch/docker-compose.yml
Sampras Lopes d21fcc7bfc fix(config): fix docker compose local setup (#1372)
Co-authored-by: Sanchith Hegde <22217505+SanchithHegde@users.noreply.github.com>
2023-06-07 09:45:52 +00:00

277 lines
5.9 KiB
YAML

version: "3.7"
volumes:
cargo_cache:
pg_data:
cargo_build_cache:
p_cargo_build_cache:
c_cargo_build_cache:
redisinsight_store:
networks:
router_net:
services:
promtail:
image: grafana/promtail:latest
volumes:
- ./logs:/var/log/router
- ./config:/etc/promtail
- /var/run/docker.sock:/var/run/docker.sock
command: -config.file=/etc/promtail/promtail.yaml
profiles:
- monitoring
networks:
- router_net
loki:
image: grafana/loki:latest
ports:
- "3100"
command: -config.file=/etc/loki/loki.yaml
networks:
- router_net
profiles:
- monitoring
volumes:
- ./config:/etc/loki
otel-collector:
image: otel/opentelemetry-collector-contrib:latest
command: --config=/etc/otel-collector.yaml
networks:
- router_net
profiles:
- monitoring
volumes:
- ./config/otel-collector.yaml:/etc/otel-collector.yaml
ports:
- "4317"
- "8888"
- "8889"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- router_net
profiles:
- monitoring
restart: unless-stopped
environment:
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_BASIC_ENABLED=false
volumes:
- ./config/grafana.ini:/etc/grafana/grafana.ini
- ./config/grafana-datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yml
pg:
image: postgres:14.5
ports:
- "5432"
networks:
- router_net
volumes:
- pg_data:/VAR/LIB/POSTGRESQL/DATA
environment:
- POSTGRES_USER=db_user
- POSTGRES_PASSWORD=db_pass
- POSTGRES_DB=hyperswitch_db
migration_runner:
image: rust:1.70
command: "bash -c 'cargo install diesel_cli --no-default-features --features \"postgres\" && diesel migration --database-url postgres://db_user:db_pass@pg:5432/hyperswitch_db run'"
working_dir: /app
networks:
- router_net
volumes:
- ./:/app
hyperswitch-server:
image: rust:1.70
command: cargo run -- -f ./config/docker_compose.toml
working_dir: /app
ports:
- "8080:8080"
networks:
- router_net
volumes:
- ./:/app
- cargo_cache:/cargo_cache
- cargo_build_cache:/cargo_build_cache
environment:
- CARGO_TARGET_DIR=/cargo_build_cache
labels:
logs: "promtail"
healthcheck:
test: curl --fail http://localhost:8080/health || exit 1
interval: 100s
retries: 3
start_period: 20s
timeout: 10s
hyperswitch-producer:
image: rust:1.70
command: cargo run --bin scheduler -- -f ./config/docker_compose.toml
working_dir: /app
networks:
- router_net
profiles:
- scheduler
volumes:
- ./:/app
- cargo_cache:/cargo_cache
- p_cargo_build_cache:/cargo_build_cache
environment:
- CARGO_TARGET_DIR=/cargo_build_cache
- SCHEDULER_FLOW=producer
depends_on:
hyperswitch-consumer:
condition: service_healthy
labels:
logs: "promtail"
hyperswitch-consumer:
image: rust:1.70
command: cargo run --bin scheduler -- -f ./config/docker_compose.toml
working_dir: /app
networks:
- router_net
profiles:
- scheduler
volumes:
- ./:/app
- cargo_cache:/cargo_cache
- c_cargo_build_cache:/cargo_build_cache
environment:
- CARGO_TARGET_DIR=/cargo_build_cache
- SCHEDULER_FLOW=consumer
depends_on:
hyperswitch-server:
condition: service_started
labels:
logs: "promtail"
healthcheck:
test: (ps -e | grep scheduler) || exit 1
interval: 120s
retries: 3
start_period: 30s
timeout: 10s
redis-queue:
image: redis:7
deploy:
replicas: ${REDIS_CLUSTER_COUNT:-3}
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./config/redis.conf:/usr/local/etc/redis/redis.conf
labels:
- redis
networks:
- router_net
ports:
- "6379"
- "16379"
redis-init:
image: redis:7
depends_on:
- redis-queue
networks:
- router_net
command: "bash -c 'export COUNT=${REDIS_CLUSTER_COUNT:-3}
\ if [ $$COUNT -lt 3 ]
\ then
\ echo \"Minimum 3 nodes are needed for redis cluster\"
\ exit 1
\ fi
\ HOSTS=\"\"
\ for ((c=1; c<=$$COUNT;c++))
\ do
\ NODE=$COMPOSE_PROJECT_NAME-redis-queue-$$c:6379
\ echo $$NODE
\ HOSTS=\"$$HOSTS $$NODE\"
\ done
\ echo Creating a cluster with $$HOSTS
\ redis-cli --cluster create $$HOSTS --cluster-yes
\ '"
redis-insight:
image: redislabs/redisinsight:latest
networks:
- router_net
profiles:
- full_kv
ports:
- "8001:8001"
volumes:
- redisinsight_store:/db
prometheus:
image: prom/prometheus:latest
networks:
- router_net
profiles:
- monitoring
volumes:
- ./config/prometheus.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090"
restart: unless-stopped
tempo:
image: grafana/tempo:latest
command: -config.file=/etc/tempo.yaml
volumes:
- ./config/tempo.yaml:/etc/tempo.yaml
networks:
- router_net
profiles:
- monitoring
ports:
- "3200" # tempo
- "4317" # otlp grpc
restart: unless-stopped
hyperswitch-drainer:
image: rust:1.70
command: cargo run --bin drainer -- -f ./config/docker_compose.toml
working_dir: /app
deploy:
replicas: ${DRAINER_INSTANCE_COUNT:-1}
networks:
- router_net
profiles:
- full_kv
volumes:
- ./:/app
- cargo_cache:/cargo_cache
- cargo_build_cache:/cargo_build_cache
environment:
- CARGO_TARGET_DIR=/cargo_build_cache
restart: unless-stopped
depends_on:
hyperswitch-server:
condition: service_started
labels:
logs: "promtail"