{"owner":"juspay","repo":"hyperswitch","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker-compose.yml","servicesCount":30,"services":[{"name":"prestart-hook","image":"docker.io/curlimages/curl-base:latest","environment":["ONE_CLICK_SETUP=${ONE_CLICK_SETUP:-false}"],"volumes":["./scripts/prestart_hook.sh:/prestart_hook.sh"]},{"name":"pg","image":"docker.io/postgres:latest","ports":["5432:5432"],"environment":["POSTGRES_USER=db_user","POSTGRES_PASSWORD=db_pass","POSTGRES_DB=hyperswitch_db"],"volumes":["pg_data:/var/lib/postgresql"]},{"name":"redis-standalone","image":"docker.io/redis:7","ports":["6379:6379"]},{"name":"migration_runner","image":"docker.io/debian:trixie-slim","command":"bash -c \" apt-get update && apt-get install -y curl xz-utils && curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diesel-rs/diesel/releases/download/v2.3.5/diesel_cli-installer.sh | bash && if ! command -v just >/dev/null 2>&1; then\n  curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin\nfi && export PATH=\"$${PATH}:$${HOME}/.cargo/bin\" && just migrate\"\n","environment":["DATABASE_URL=postgresql://db_user:db_pass@pg:5432/hyperswitch_db"],"volumes":["./:/app"]},{"name":"superposition","image":"ghcr.io/juspay/superposition-demo:0.113.0","ports":["8081:8080"],"environment":["API_HOSTNAME=http://localhost:8081","REDIS_URL=redis://redis-standalone:6379"],"depends_on":["redis-standalone"]},{"name":"superposition-init","image":"alpine:latest","restart":"no","command":"sh -c \"apk add --no-cache curl jq yq && sh /seed_superposition.sh\"","environment":["SUPERPOSITION_URL=http://superposition:8080","SEED_FILE=/seed.toml","WORKSPACE_ID=dev","ORG_ID=localorg"],"volumes":["./config/superposition_seed.toml:/seed.toml:ro","./scripts/seed_superposition.sh:/seed_superposition.sh:ro"],"depends_on":["superposition"]},{"name":"mailhog","image":"docker.io/mailhog/mailhog","ports":["1025:1025","8025:8025"]},{"name":"hyperswitch-server","image":"docker.juspay.io/juspaydotin/hyperswitch-router:standalone","command":"/local/bin/router -f /local/config/docker_compose.toml","ports":["8080:8080"],"volumes":["./config:/local/config","./files:/local/bin/files"],"depends_on":["pg","redis-standalone","migration_runner","superposition-init"]},{"name":"hyperswitch-producer","image":"docker.juspay.io/juspaydotin/hyperswitch-producer:standalone","command":"/local/bin/scheduler -f /local/config/docker_compose.toml","environment":["SCHEDULER_FLOW=producer"],"volumes":["./config:/local/config"],"depends_on":["hyperswitch-consumer"]},{"name":"hyperswitch-consumer","image":"docker.juspay.io/juspaydotin/hyperswitch-consumer:standalone","command":"/local/bin/scheduler -f /local/config/docker_compose.toml","environment":["SCHEDULER_FLOW=consumer"],"volumes":["./config:/local/config"],"depends_on":["hyperswitch-server"]},{"name":"hyperswitch-drainer","image":"docker.juspay.io/juspaydotin/hyperswitch-drainer:standalone","restart":"unless-stopped","command":"/local/bin/drainer -f /local/config/docker_compose.toml","volumes":["./config:/local/config"],"depends_on":["hyperswitch-server"]},{"name":"hyperswitch-web","image":"docker.juspay.io/juspaydotin/hyperswitch-web:latest","ports":["9050:9050"],"environment":["ENABLE_LOGGING=true","SDK_ENV=local","ENV_LOGGING_URL=http://localhost:3103","ENV_BACKEND_URL=http://localhost:8080"],"depends_on":["hyperswitch-server"]},{"name":"hyperswitch-control-center","image":"docker.juspay.io/juspaydotin/hyperswitch-control-center:latest","ports":["9000:9000"],"environment":["configPath=/tmp/dashboard-config.toml","themeConfigPath=/tmp/dashboard-theme.json"],"volumes":["./config/dashboard.toml:/tmp/dashboard-config.toml","./config/dashboard_theme.json:/tmp/dashboard-theme.json"],"depends_on":["hyperswitch-server","hyperswitch-web"]},{"name":"create-default-user","image":"docker.io/curlimages/curl-base:latest","environment":["HYPERSWITCH_SERVER_URL=http://hyperswitch-server:8080","HYPERSWITCH_CONTROL_CENTER_URL=http://hyperswitch-control-center:9000"],"volumes":["./scripts/create_default_user.sh:/create_default_user.sh"],"depends_on":["hyperswitch-server","hyperswitch-control-center"]},{"name":"poststart-hook","image":"docker.io/curlimages/curl-base:latest","environment":["ONE_CLICK_SETUP=${ONE_CLICK_SETUP:-false}"],"volumes":["./scripts/poststart_hook.sh:/poststart_hook.sh"],"depends_on":["hyperswitch-server"]},{"name":"redis-cluster","image":"docker.io/redis:7","command":"redis-server /usr/local/etc/redis/redis.conf","ports":["6379","16379"],"volumes":["./config/redis.conf:/usr/local/etc/redis/redis.conf"]},{"name":"redis-init","image":"docker.io/redis:7","command":"bash -c 'export COUNT=${REDIS_CLUSTER_COUNT:-3}\nif [ $$COUNT -lt 3 ]\nthen\necho \\\"Minimum 3 nodes are needed for redis cluster\\\"\nexit 1\nfi\nHOSTS=\\\"\\\"\nfor ((c=1; c<=$$COUNT;c++))\ndo\nNODE=$COMPOSE_PROJECT_NAME-redis-cluster-$$c:6379\necho $$NODE\nHOSTS=\\\"$$HOSTS $$NODE\\\"\ndone\necho Creating a cluster with $$HOSTS\nredis-cli --cluster create $$HOSTS --cluster-yes\n'","depends_on":["redis-cluster"]},{"name":"grafana","image":"docker.io/grafana/grafana:latest","restart":"unless-stopped","ports":["3000:3000"],"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"]},{"name":"loki","image":"docker.io/grafana/loki:latest","command":"-config.file=/etc/loki/loki.yaml","ports":["3100"],"volumes":["./config:/etc/loki"]},{"name":"otel-collector","image":"docker.io/otel/opentelemetry-collector-contrib:latest","command":"--config=/etc/otel-collector.yaml","ports":["4317","8888","8889"],"volumes":["./config/otel-collector.yaml:/etc/otel-collector.yaml"]},{"name":"prometheus","image":"docker.io/prom/prometheus:latest","restart":"unless-stopped","ports":["9090"],"volumes":["./config/prometheus.yaml:/etc/prometheus/prometheus.yml"]},{"name":"tempo","image":"docker.io/grafana/tempo:latest","restart":"unless-stopped","command":"-config.file=/etc/tempo.yaml","ports":["3200","4317"],"volumes":["./config/tempo.yaml:/etc/tempo.yaml"]},{"name":"redis-insight","image":"docker.io/redislabs/redisinsight:latest","ports":["8001:8001"],"volumes":["redisinsight_store:/db"]},{"name":"kafka0","image":"docker.io/confluentinc/cp-kafka:7.0.5","command":"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'","ports":["9092:9092","9093","9997","29092"],"environment":["KAFKA_BROKER_ID=1","KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT","KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092","KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT","KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1","KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=0","KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1","KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1","KAFKA_PROCESS_ROLES=broker,controller","KAFKA_NODE_ID=1","KAFKA_CONTROLLER_QUORUM_VOTERS=1@kafka0:29093","KAFKA_LISTENERS=PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092","KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER","KAFKA_LOG_DIRS=/tmp/kraft-combined-logs","JMX_PORT=9997","KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997"],"volumes":["./monitoring/kafka-script.sh:/tmp/update_run.sh"]},{"name":"kafka-ui","image":"docker.io/provectuslabs/kafka-ui:latest","ports":["8090:8080"],"environment":["KAFKA_CLUSTERS_0_NAME=local","KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka0:29092","KAFKA_CLUSTERS_0_JMXPORT=9997"],"depends_on":["kafka0"]},{"name":"clickhouse-server","image":"docker.io/clickhouse/clickhouse-server:24.3","ports":["9000","8123:8123"],"environment":["TZ=Asia/Kolkata"],"volumes":["./crates/analytics/docs/clickhouse/scripts:/docker-entrypoint-initdb.d"]},{"name":"opensearch","image":"docker.io/opensearchproject/opensearch:2","ports":["9200:9200"],"environment":["discovery.type=single-node","OPENSEARCH_INITIAL_ADMIN_PASSWORD=0penS3arc#","LOG_LEVEL=DEBUG"]},{"name":"opensearch-dashboards","image":"docker.io/opensearchproject/opensearch-dashboards:2","ports":["5601:5601"],"environment":["OPENSEARCH_HOSTS=[\"https://opensearch:9200\"]"]},{"name":"vector","image":"docker.io/timberio/vector:latest-debian","ports":["8686","9598","3103:3103"],"environment":["KAFKA_HOST=kafka0:29092"],"volumes":["./config/vector.yaml:/etc/vector/vector.yaml","/var/run/docker.sock:/var/run/docker.sock"]},{"name":"hyperswitch-demo","image":"docker.juspay.io/juspaydotin/hyperswitch-react-demo-app:latest","ports":["9060:9060","5252:5252"],"environment":["HYPERSWITCH_PUBLISHABLE_KEY=placeholder_publishable_key","HYPERSWITCH_SECRET_KEY=placeholder_api_key","PROFILE_ID=placeholder_profile_id","HYPERSWITCH_CLIENT_URL=http://localhost:9050","HYPERSWITCH_SERVER_URL=http://localhost:8080"],"depends_on":["hyperswitch-server","hyperswitch-web"]}],"exposedPorts":["5432","6379","8081","1025","8025","8080","9050","9000","16379","3000","3100","4317","8888","8889","9090","3200","8001","9092","9093","9997","29092","8090","8123","9200","5601","8686","9598","3103","9060","5252"],"dockerRunCommand":"docker run -d --name hyperswitch -p 5432:5432 --restart always docker.juspay.io/juspaydotin/hyperswitch-router:standalone","podmanRunCommand":"podman run -d --name hyperswitch -p 5432:5432 --restart always docker.juspay.io/juspaydotin/hyperswitch-router:standalone","skopeoInspectCommand":"skopeo inspect docker://docker.io/docker.juspay.io/juspaydotin/hyperswitch-router:standalone","orasPullCommand":"oras pull docker.juspay.io/juspaydotin/hyperswitch-router:standalone","registryMeta":{"provider":"dockerhub","image":"docker.juspay.io/juspaydotin/hyperswitch-router","canonicalImage":"docker.io/docker.juspay.io/juspaydotin/hyperswitch-router:standalone","latestTag":"standalone","cliCommands":{"dockerRun":"docker run -d --name hyperswitch -p 5432:5432 --restart always docker.juspay.io/juspaydotin/hyperswitch-router:standalone","dockerPull":"docker pull docker.juspay.io/juspaydotin/hyperswitch-router:standalone","podmanRun":"podman run -d --name hyperswitch -p 5432:5432 --restart always docker.juspay.io/juspaydotin/hyperswitch-router:standalone","skopeoInspect":"skopeo inspect docker://docker.io/docker.juspay.io/juspaydotin/hyperswitch-router:standalone","orasPull":"oras pull docker.juspay.io/juspaydotin/hyperswitch-router:standalone","composeYaml":"services:\n  hyperswitch:\n    image: docker.juspay.io/juspaydotin/hyperswitch-router:standalone\n    restart: unless-stopped\n    ports:\n      - \"5432:5432\""}}}