services: ingester: image: ghcr.io/metaplex-foundation/aura-ingester:${DOCKER_IMAGE_TAG} container_name: ingester restart: always env_file: - .env network_mode: host volumes: - ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:rw - ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:rw - ${ROCKS_BACKUP_DIR}:${ROCKS_BACKUP_DIR}:rw - ${ROCKS_BACKUP_ARCHIVES_DIR}:${ROCKS_BACKUP_ARCHIVES_DIR}:rw - ${FILE_STORAGE_PATH}:${FILE_STORAGE_PATH_CONTAINER}:rw - ${ROCKS_MIGRATION_STORAGE_PATH}:${ROCKS_MIGRATION_STORAGE_PATH}:rw - ${ROCKS_SLOTS_DB_PATH}:${ROCKS_SLOTS_DB_PATH}:ro - ${ROCKS_SECONDARY_SLOTS_DB_PATH}:${ROCKS_SECONDARY_SLOTS_DB_PATH}:rw - ./creds.json:/usr/src/app/creds.json - ./migrations:/usr/src/app/migrations - ./arweave_wallet.json:/usr/src/app/arweave_wallet.json # Only exists for profiling - uncomment if needed # - ./heaps:/usr/src/app/heaps:rw # - ${PROFILING_FILE_PATH}:${PROFILING_FILE_PATH_CONTAINER}:rw depends_on: - db stop_grace_period: 10m logging: options: max-size: "2048m" synchronizer: image: ghcr.io/metaplex-foundation/aura-synchronizer:${DOCKER_IMAGE_TAG} container_name: synchronizer restart: always env_file: - .env network_mode: host volumes: - ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:rw - ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:rw - ${ROCKS_DB_SECONDARY_PATH}/synchronizer:${ROCKS_DB_SECONDARY_PATH}:rw - ./migrations:/usr/src/app/migrations # Only exists for profiling - uncomment if needed # - ./heaps:/usr/src/app/heaps:rw depends_on: - db stop_grace_period: 5m logging: options: max-size: "2048m" slot-persister: image: ghcr.io/metaplex-foundation/aura-slot_persister:${DOCKER_IMAGE_TAG} container_name: slot-persister restart: always env_file: - .env environment: SLOTS_DB_PRIMARY_PATH: ${ROCKS_SLOTS_DB_PATH} METRICS_PORT: 9090 network_mode: host volumes: - ${ROCKS_SLOTS_DB_PATH}:${ROCKS_SLOTS_DB_PATH}:rw - ./creds.json:/usr/src/app/creds.json stop_grace_period: 5m logging: options: max-size: "2048m" db: container_name: db image: 'postgres:14' command: [ "postgres", "-c", "log_statement=none", "-c", "log_destination=stderr" ,"-c","max_connections=2000", "-c", "max_parallel_workers=32", "-c", "max_parallel_workers_per_gather=24", "-c", "max_parallel_maintenance_workers=8", "-c", "shared_buffers=30GB", "-c", "effective_cache_size=55GB", "-c", "work_mem=1GB", "-c", "max_wal_size=20GB" ] shm_size: 1g ports: - 5432:5432 environment: POSTGRES_USER: solana # The PostgreSQL user (useful to connect to the database) POSTGRES_PASSWORD: solana # The PostgreSQL password (useful to connect to the database) POSTGRES_DB: solana volumes: - ${POSTGRE_DB_PATH}:/var/lib/postgresql/data/:rw - ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:ro logging: options: max-size: "100m" # - Currently not in use, requires rechecking of functionality # # rocksdb-backup: # image: ghcr.io/metaplex-foundation/aura-rocksdb_backup:${DOCKER_IMAGE_TAG} # container_name: rocksdb-backup # env_file: # - .env # network_mode: host # volumes: # - ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:ro # - ${ROCKS_BACKUP_DIR}:${ROCKS_BACKUP_DIR}:rw # - ${ROCKS_BACKUP_ARCHIVES_DIR}:${ROCKS_BACKUP_ARCHIVES_DIR}:rw # - ${ROCKS_DB_SECONDARY_PATH}/backup:${ROCKS_DB_SECONDARY_PATH}:rw # stop_grace_period: 2m # logging: # options: # max-size: "100m" # - We run it with ingester # # das-api: # image: ghcr.io/metaplex-foundation/aura-api:${DOCKER_IMAGE_TAG} # container_name: das-api # restart: always # env_file: # - .env # network_mode: host # volumes: # - ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:ro # - ${ROCKS_DB_SECONDARY_PATH}/api:${ROCKS_DB_SECONDARY_PATH}:rw # - ${ROCKS_ARCHIVES_DIR}:${ROCKS_ARCHIVES_DIR}:ro # - ${FILE_STORAGE_PATH}:${FILE_STORAGE_PATH_CONTAINER}:rw # # Only exists for profiling - uncomment if needed # # - ./heaps:/usr/src/app/heaps:rw # depends_on: # - db # stop_grace_period: 2m # logging: # options: # max-size: "2048m" # - We run it with ingester # # backfill: # image: ghcr.io/metaplex-foundation/aura-backfill:${DOCKER_IMAGE_TAG} # container_name: backfill # restart: no # env_file: # - .env # environment: # SOURCE_SLOTS_DB_PATH: ${ROCKS_SLOTS_DB_PATH} # TARGET_MAIN_DB_PATH: ${ROCKS_DB_PATH} # network_mode: host # volumes: # - ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:rw # - ${ROCKS_SLOTS_DB_PATH}:${ROCKS_SLOTS_DB_PATH}:ro # stop_grace_period: 5m # logging: # options: # max-size: "2048m" # - Currently not in use, requires rechecking of functionality # # integrity-verification: # container_name: integrity-verification # restart: always # env_file: # - .env # network_mode: host # volumes: # - ./creds.json:/usr/src/app/creds.json # - ${INTEGRITY_VERIFICATION_TEST_FILE_PATH}:${INTEGRITY_VERIFICATION_TEST_FILE_PATH_CONTAINER}:rw # - ${INTEGRITY_VERIFICATION_SLOTS_COLLECT_PATH}:${INTEGRITY_VERIFICATION_SLOTS_COLLECT_PATH_CONTAINER}:rw # depends_on: # - db # logging: # options: # max-size: "2048m"