name: peerdb-quickstart x-minio-config: &minio-config PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_ACCESS_KEY_ID: _peerdb_minioadmin PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_SECRET_ACCESS_KEY: _peerdb_minioadmin PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_REGION: us-east-1 PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_ENDPOINT_URL_S3: http://host.docker.internal:9001 PEERDB_CLICKHOUSE_AWS_S3_BUCKET_NAME: peerdbbucket x-catalog-config: &catalog-config PEERDB_CATALOG_HOST: catalog PEERDB_CATALOG_PORT: 5432 PEERDB_CATALOG_USER: postgres PEERDB_CATALOG_PASSWORD: postgres PEERDB_CATALOG_DATABASE: postgres x-flow-worker-env: &flow-worker-env TEMPORAL_HOST_PORT: temporal:7233 TEMPORAL_CLIENT_CERT: TEMPORAL_CLIENT_KEY: PEERDB_TEMPORAL_NAMESPACE: default # For GCS, these will be your HMAC keys instead # For more information: # https://cloud.google.com/storage/docs/authentication/managing-hmackeys AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-} # For GCS, set this to "auto" without the quotes AWS_REGION: ${AWS_REGION:-} # For GCS, set this as: https://storage.googleapis.com AWS_ENDPOINT: ${AWS_ENDPOINT:-} services: catalog: container_name: catalog image: postgres:17-alpine@sha256:ccfa992a46925f976709844d552aecb316eab4fb512b699bc0f990a489fed463 command: -c config_file=/etc/postgresql.conf restart: unless-stopped ports: - 9901:5432 environment: PGUSER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres POSTGRES_INITDB_ARGS: --locale=C.UTF-8 extra_hosts: - "host.docker.internal:host-gateway" volumes: - pgdata:/var/lib/postgresql/data - ./volumes/postgresql.conf:/etc/postgresql.conf - ./volumes/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d healthcheck: test: ["CMD", "pg_isready", "-d", "postgres", "-U", "postgres"] interval: 10s timeout: 30s retries: 5 start_period: 60s temporal: container_name: temporal restart: unless-stopped depends_on: catalog: condition: service_healthy environment: - DB=postgres12 - DB_PORT=5432 - POSTGRES_USER=postgres - POSTGRES_PWD=postgres - POSTGRES_SEEDS=catalog - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml image: temporalio/auto-setup:1.25@sha256:b1edc1e20002d958c8182f2ae08dee877a125083683a627a44917683419ba6a8 ports: - 7233:7233 volumes: - ./volumes/temporal-dynamicconfig:/etc/temporal/config/dynamicconfig labels: kompose.volume.type: configMap temporal-admin-tools: container_name: temporal-admin-tools restart: unless-stopped depends_on: - temporal environment: - TEMPORAL_ADDRESS=temporal:7233 - TEMPORAL_CLI_ADDRESS=temporal:7233 - TEMPORAL_CLI_SHOW_STACKS=1 image: temporalio/admin-tools:1.25.2-tctl-1.18.1-cli-1.1.1@sha256:da0c7a7982b571857173ab8f058e7f139b3054800abb4dcb100445d29a563ee8 stdin_open: true tty: true entrypoint: /etc/temporal/entrypoint.sh healthcheck: test: ["CMD", "tctl", "workflow", "list"] interval: 1s timeout: 5s retries: 30 volumes: - ./scripts/mirror-name-search.sh:/etc/temporal/entrypoint.sh temporal-ui: container_name: temporal-ui restart: unless-stopped depends_on: - temporal environment: - TEMPORAL_ADDRESS=temporal:7233 - TEMPORAL_CORS_ORIGINS=http://localhost:3000 - TEMPORAL_CSRF_COOKIE_INSECURE=true image: temporalio/ui:2.32.0@sha256:82bf98dbe005a831b6bc5dc12ccd7bffd606af2032dae4821ae133caaa943d3d ports: - 8085:8080 flow-api: container_name: flow_api image: ghcr.io/peerdb-io/flow-api:stable-v0.20.1 restart: unless-stopped ports: - 8112:8112 - 8113:8113 environment: <<: [*catalog-config, *flow-worker-env, *minio-config] PEERDB_ALLOWED_TARGETS: extra_hosts: - "host.docker.internal:host-gateway" depends_on: temporal-admin-tools: condition: service_healthy flow-snapshot-worker: container_name: flow-snapshot-worker image: ghcr.io/peerdb-io/flow-snapshot-worker:stable-v0.20.1 restart: unless-stopped environment: <<: [*catalog-config, *flow-worker-env, *minio-config] depends_on: temporal-admin-tools: condition: service_healthy flow-worker: container_name: flow-worker image: ghcr.io/peerdb-io/flow-worker:stable-v0.20.1 restart: unless-stopped environment: <<: [*catalog-config, *flow-worker-env, *minio-config] extra_hosts: - "host.docker.internal:host-gateway" depends_on: temporal-admin-tools: condition: service_healthy peerdb: container_name: peerdb-server stop_signal: SIGINT image: ghcr.io/peerdb-io/peerdb-server:stable-v0.20.1 restart: unless-stopped environment: <<: *catalog-config PEERDB_PASSWORD: PEERDB_FLOW_SERVER_ADDRESS: grpc://flow_api:8112 RUST_LOG: info RUST_BACKTRACE: 1 ports: - 9900:9900 depends_on: catalog: condition: service_healthy peerdb-ui: container_name: peerdb-ui image: ghcr.io/peerdb-io/peerdb-ui:stable-v0.20.1 restart: unless-stopped ports: - 3000:3000 environment: <<: *catalog-config DATABASE_URL: postgres://postgres:postgres@catalog:5432/postgres PEERDB_FLOW_SERVER_HTTP: http://flow_api:8113 NEXTAUTH_SECRET: __changeme__ NEXTAUTH_URL: http://localhost:3000 PEERDB_ALLOWED_TARGETS: PEERDB_CLICKHOUSE_ALLOWED_DOMAINS: PEERDB_EXPERIMENTAL_ENABLE_SCRIPTING: true depends_on: - flow-api minio: image: minio/minio:RELEASE.2024-11-07T00-52-20Z@sha256:ac591851803a79aee64bc37f66d77c56b0a4b6e12d9e5356380f4105510f2332 restart: unless-stopped volumes: - minio-data:/data ports: - "9001:9000" - "9002:36987" environment: <<: *minio-config entrypoint: > /bin/sh -c " export MINIO_ROOT_USER=$$PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_ACCESS_KEY_ID; export MINIO_ROOT_PASSWORD=$$PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_SECRET_ACCESS_KEY; minio server /data --console-address=":36987" & sleep 2; /usr/bin/mc alias set myminiopeerdb http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD; /usr/bin/mc mb myminiopeerdb/$$PEERDB_CLICKHOUSE_AWS_S3_BUCKET_NAME; wait " volumes: pgdata: minio-data: networks: default: name: peerdb_network