version: '3.1'

services:
  geth-linea:                         
    build: ./linea/geth
    expose: 
      # HTTP server / GraphQL API 
      - 8545                   
    ports:                      
      - "63017:63017"                                                                                 
      - "63017:63017/udp"  
    command:
      [                                                                                               
        "--port=63017",
        "--graphql",                               
        "--graphql.vhosts=*",             
        "--networkid=59144",
        "--miner.gasprice=1000000000",
        "--miner.gaslimit=61000000",
        "--rpc.allow-unprotected-txs",
        "--txpool.accountqueue=50000",
        "--txpool.globalqueue=50000",
        "--txpool.globalslots=50000",
        "--txpool.pricelimit=1000000000",
        "--rpc.txfeecap=100",
        "--gpo.maxprice=100000000000000",
        "--txpool.nolocals",
        "--http",
        "--http.addr=0.0.0.0",
        "--http.port=8545",
        "--http.corsdomain=*",
        "--http.api=web3,eth,txpool,net", 
        "--http.vhosts=*",
        "--ws",
        "--ws.addr=0.0.0.0",
        "--ws.port=8545",
        "--ws.origins=*",
        "--ws.api=eth,net,web3,txpool",
        "--bootnodes=enode://ca2f06aa93728e2883ff02b0c2076329e475fe667a48035b4f77711ea41a73cf6cb2ff232804c49538ad77794185d83295b57ddd2be79eefc50a9dd5c48bbb2e@3.128.49.168:30303,enode://eef91d714494a1ceb6e06e5ce96fe5d7d25d3701b2d2e68c042b33d5fa0e4bf134116e06947b3f40b0f22db08f104504dd2e5c790d8bcbb6bfb1b7f4f85313ec@3.130.182.201:30303,enode://cfd472842582c422c7c98b0f2d04c6bf21d1afb2c767f72b032f7ea89c03a7abdaf4855b7cb2dc9ae7509836064ba8d817572cf7421ba106ac87857836fa1d1b@3.136.114.192:30303",
        "--syncmode=full",
        "--gcmode=archive",
        "--metrics",
        "--pprof",
        "--metrics.addr=0.0.0.0",
        "--verbosity=3",
      ]                                                                                               
    networks:                            
      - chains                                                                                        
    volumes:                                                                                          
      - geth-linea:/root/.ethereum
      - ./linea/shared:/configs/mainnet/shared
    restart: unless-stopped
    stop_grace_period: 1m
    labels:                     
      - "traefik.enable=true"
      - "traefik.http.middlewares.linea-stripprefix.stripprefix.prefixes=/linea"                  
      - "traefik.http.services.linea.loadbalancer.server.port=8545"                                 
      - "traefik.http.routers.linea.entrypoints=websecure"                                          
      - "traefik.http.routers.linea.tls.certresolver=myresolver"                                    
      - "traefik.http.routers.linea.rule=Host(`$DOMAIN`) && PathPrefix(`/linea`)"                 
      - "traefik.http.routers.linea.middlewares=linea-stripprefix, ipwhitelist"
      - "prometheus-scrape.enabled=true"
      - "prometheus-scrape.port=6060"
      - "prometheus-scrape.job_name=geth-linea"
      - "prometheus-scrape.metrics_path=/debug/metrics/prometheus"      
      
volumes:
    geth-linea:
