version: "3.2" services: starknet: image: ghcr.io/dojoengine/dojo:v0.6.0-alpha.2 command: - katana - --disable-fee - --validate-max-steps - "16777216" - --invoke-max-steps - "16777216" - --eth-gas-price - "0" - --strk-gas-price - "0" - --chain-id - "KKRT" ports: - "5050:5050" networks: - internal restart: on-failure kakarot-deployer: image: ghcr.io/kkrt-labs/kakarot/deployer:latest # Always pull the latest image, until we use release tags pull_policy: always environment: # Pre-funded Katana accounts - ACCOUNT_ADDRESS=0xb3ff441a68610b30fd5e2abbf3a1548eb6ba6f3559f2862bf2dc757e5828ca - PRIVATE_KEY=0x2bbf4f9fd0bbb2e60b0316c1fe0b76cf7a4d0198bd493ced9b8df2a3a24d68a # EVM Private key of the Anvil default Account (address 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266) - EVM_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 - KATANA_RPC_URL=http://starknet:5050 - STARKNET_NETWORK=katana volumes: # Since STARKNET_NETWORK is set to katana, the deployments json files will be saved with katana network folder - deployments:/app/kakarot/deployments depends_on: starknet: condition: service_started restart: on-failure networks: - internal deployments-parser: image: apteno/alpine-jq:2023-07-24 # Parse deployments and save the result to .env file entrypoint: - "/bin/sh" - "-c" # First line overrides an existing .env, if any. # This is to make sure that it is clean even though docker volume was not cleaned. - | echo "KAKAROT_ADDRESS=$$(jq -r '.kakarot.address' /deployments/katana/deployments.json)" > /deployments/.env; echo "DEPLOYER_ACCOUNT_ADDRESS=$$(jq -r '.deployer_account.address' /deployments/katana/deployments.json)" >> /deployments/.env; echo "PROXY_ACCOUNT_CLASS_HASH=$$(jq -r '.proxy' /deployments/katana/declarations.json)" >> /deployments/.env echo "EXTERNALLY_OWNED_ACCOUNT_CLASS_HASH=$$(jq -r '.externally_owned_account' /deployments/katana/declarations.json)" >> /deployments/.env echo "CONTRACT_ACCOUNT_CLASS_HASH=$$(jq -r '.contract_account' /deployments/katana/declarations.json)" >> /deployments/.env volumes: - deployments:/deployments depends_on: kakarot-deployer: condition: service_completed_successfully kakarot-rpc: image: ghcr.io/kkrt-labs/kakarot-rpc/node:latest # Always pull the latest image, until we use release tags # TODO: use release tags pull_policy: always ports: - 3030:3030 environment: - KAKAROT_RPC_URL=0.0.0.0:3030 - STARKNET_NETWORK=http://starknet:5050 - RUST_LOG=kakarot_rpc=info - MONGO_CONNECTION_STRING=mongodb://mongo:mongo@mongo:27017 - MONGO_DATABASE_NAME=kakarot-local volumes: # Mount the volume on workdir and use .env stored in root of the volume - deployments:/usr/app depends_on: deployments-parser: condition: service_completed_successfully restart: on-failure networks: - internal apibara-dna: image: quay.io/apibara/starknet:1.4.1 command: - start - --rpc=http://starknet:5050 - --wait-for-rpc - --data=/data ports: - 7171:7171 volumes: - apibara:/data networks: - internal restart: on-failure ### MongoDB with Mongo Express mongo: image: mongo:6.0.8 restart: always ports: - 27017:27017 volumes: - mongo_data:/data/db networks: - internal environment: MONGO_INITDB_ROOT_USERNAME: mongo MONGO_INITDB_ROOT_PASSWORD: mongo clone-repo: image: docker.io/alpine/git:latest entrypoint: "/bin/sh" command: - "-c" # clone the repository in `/code`, removing any old copy. - "cd /code && rm -rf kakarot-indexer && git clone -v https://github.com/kkrt-labs/kakarot-indexer.git" volumes: - "indexer_code:/code" restart: on-failure indexer: image: quay.io/apibara/sink-mongo command: - run - /code/kakarot-indexer/src/main.ts environment: # Whitelist environment variables - ALLOW_ENV_FROM_ENV=DEBUG,APIBARA_AUTH_TOKEN,STARTING_BLOCK,STREAM_URL,SINK_TYPE,MONGO_CONNECTION_STRING,MONGO_DATABASE_NAME,STARKNET_NETWORK,KAKAROT_ADDRESS,ALLOW_NET - DEBUG="" - APIBARA_AUTH_TOKEN="" - MONGO_CONNECTION_STRING=mongodb://mongo:mongo@mongo:27017 - MONGO_DATABASE_NAME=kakarot-local - STARTING_BLOCK=0 - STREAM_URL=http://apibara-dna:7171 - SINK_TYPE=mongo - STARKNET_NETWORK=http://starknet:5050 - ALLOW_NET= - ALLOW_ENV=/deployments/.env restart: on-failure volumes: - indexer_code:/code - deployments:/deployments networks: - internal depends_on: clone-repo: condition: service_completed_successfully starknet: condition: service_started deployments-parser: condition: service_completed_successfully networks: internal: volumes: deployments: apibara: mongo_data: indexer_code: