
# From: https://raw.githubusercontent.com/blast-io/deployment/master/docker-compose.yml
services:
  # generate jwt.txt if it's absent
  generate-jwt:
    image: blastio/openssl
    volumes:
      - blast-data:/blast:rw
    command: >
      sh -c "[ ! -f /blast/jwt.txt ] && openssl rand -hex 32 | tr -d '\n' > /blast/jwt.txt || exit 0"
  # initialise geth db
  geth-init:
    image: blastio/blast-geth:${NETWORK:-mainnet}
    volumes:
      - blast-data:/blast:rw
    entrypoint: /bin/sh
    command: >
      -c "[ ! -d /blast/${GETH_DATA_DIR:-blast-geth-data}/geth ] && /usr/local/bin/geth init --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data} /blast/genesis.json || exit 0"
    depends_on:
      generate-jwt:
        condition: service_completed_successfully
    env_file:
      - ../config/mainnet-blast/${NETWORK:-mainnet}.config
  blast-geth:
    image: blastio/blast-geth:${NETWORK:-mainnet}
    volumes:
      - blast-data:/blast
    ports:
      - "9545"
      - "9546"
      - "6060"
    command: >
      --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data}
      --http
      --http.corsdomain="*"
      --http.vhosts="*"
      --http.addr=0.0.0.0
      --http.port=9545
      --http.api=web3,debug,eth,txpool,net,engine
      --ws
      --ws.addr=0.0.0.0
      --ws.port=9546
      --ws.origins="*"
      --ws.api=debug,eth,txpool,net,engine
      --authrpc.addr="0.0.0.0"
      --authrpc.port="8551"
      --authrpc.vhosts="*"
      --authrpc.jwtsecret=/blast/jwt.txt
      --syncmode=full
      --metrics
      --metrics.addr=0.0.0.0
      --gcmode=archive
      --nodiscover
      --maxpeers=0
      --rollup.disabletxpoolgossip=true
    env_file:
      - ../config/mainnet-blast/${NETWORK:-mainnet}.config
    depends_on:
      geth-init:
        condition: service_completed_successfully
  op-node:
    image: blastio/blast-optimism:${NETWORK:-mainnet}
    volumes:
      - blast-data:/blast
    ports:
      - "9003"
      - "7300"
    command: >
      op-node
      --l1="https://eth-mainnet-1.vdb.to/"
      --metrics.enabled
      --l1.rpckind="any"
      --l1.trustrpc=true
      --l2="http://blast-geth:8551"
      --l2.jwt-secret=/blast/jwt.txt
      --rollup.config="/blast/rollup.json"
    depends_on:
      - blast-geth
    env_file:
      - ../config/mainnet-blast/${NETWORK:-mainnet}.config

volumes:
  blast-data:
