github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/docker-compose.yml (about)

     1  version: "3.5"
     2  networks:
     3    default:
     4      name: supernets2
     5      
     6  services:
     7    grafana:
     8      container_name: grafana
     9      image: grafana/grafana-oss
    10      volumes:
    11        - ./config/grafana/datasources.yml:/etc/grafana/provisioning/datasources/default.yml:ro
    12        - ./config/grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/default.yml:ro
    13        - ./config/grafana/dashboard-dockers.json:/etc/grafana/provisioning/dashboards/dashboard-dockers.json:ro
    14        - ./config/grafana/dashboard-node.json:/etc/grafana/provisioning/dashboards/dashboard-node.json:ro
    15      environment:
    16        - GF_SECURITY_ADMIN_USER=supernets2
    17        - GF_SECURITY_ADMIN_PASSWORD=supernets2
    18      ports:
    19        - 3000:3000
    20      depends_on:
    21        - telegraf
    22  
    23    telegraf:
    24      container_name: telegraf
    25      image: telegraf
    26      volumes:
    27        - ./config/telegraf.conf:/etc/telegraf/telegraf.conf:ro
    28        - /var/run/docker.sock:/var/run/docker.sock:ro
    29      user: telegraf:${DOCKERGID}
    30      environment:
    31        - POSTGRES_HOST=grafana-db
    32        - POSTGRES_USER=user
    33        - POSTGRES_PASSWORD=password
    34        - POSTGRES_DB=grafana
    35      depends_on:
    36        - grafana-db
    37        - supernets2-json-rpc
    38  
    39    grafana-db:
    40      container_name: grafana-db
    41      image: postgres
    42      expose:
    43        - 5432
    44      environment:
    45        - POSTGRES_USER=user
    46        - POSTGRES_PASSWORD=password
    47        - POSTGRES_DB=grafana
    48  
    49    supernets2-sequencer:
    50      container_name: supernets2-sequencer
    51      image: supernets2-node
    52      ports:
    53        - 9092:9091 # needed if metrics enabled
    54        - 6060:6060
    55      environment:
    56        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
    57        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-pool-db
    58      volumes:
    59        - ./config/test.node.config.toml:/app/config.toml
    60        - ./config/test.genesis.config.json:/app/genesis.json
    61      command:
    62        - "/bin/sh"
    63        - "-c"
    64        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components sequencer"
    65  
    66    supernets2-sequence-sender:
    67      container_name: supernets2-sequence-sender
    68      image: supernets2-node
    69      environment:
    70        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
    71        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-pool-db
    72        - SUPERNETS2_NODE_SEQUENCER_SENDER_ADDRESS=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266
    73      volumes:
    74        - ./sequencer.keystore:/pk/sequencer.keystore
    75        - ./config/test.node.config.toml:/app/config.toml
    76        - ./config/test.genesis.config.json:/app/genesis.json
    77      command:
    78        - "/bin/sh"
    79        - "-c"
    80        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components sequence-sender"
    81  
    82    supernets2-json-rpc:
    83      container_name: supernets2-json-rpc
    84      image: supernets2-node
    85      ports:
    86        - 8123:8123
    87        - 8133:8133 # needed if WebSockets enabled
    88        - 9091:9091 # needed if metrics enabled
    89      environment:
    90        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
    91        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-pool-db
    92      volumes:
    93        - ./config/test.node.config.toml:/app/config.toml
    94        - ./config/test.genesis.config.json:/app/genesis.json
    95      command:
    96        - "/bin/sh"
    97        - "-c"
    98        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components rpc"
    99  
   100    supernets2-aggregator:
   101      container_name: supernets2-aggregator
   102      image: supernets2-node
   103      ports:
   104        - 50081:50081
   105        - 9093:9091 # needed if metrics enabled
   106      environment:
   107        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
   108        - SUPERNETS2_NODE_AGGREGATOR_SENDER_ADDRESS=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266
   109      volumes:
   110        - ./config/test.node.config.toml:/app/config.toml
   111        - ./config/test.genesis.config.json:/app/genesis.json
   112      command:
   113        - "/bin/sh"
   114        - "-c"
   115        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components aggregator"
   116  
   117    supernets2-sync:
   118      container_name: supernets2-sync
   119      image: supernets2-node
   120      environment:
   121        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
   122      volumes:
   123        - ./config/test.node.config.toml:/app/config.toml
   124        - ./config/test.genesis.config.json:/app/genesis.json
   125      command:
   126        - "/bin/sh"
   127        - "-c"
   128        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components synchronizer"
   129  
   130    supernets2-eth-tx-manager:
   131      container_name: supernets2-eth-tx-manager
   132      image: supernets2-node
   133      ports:
   134        - 9094:9091 # needed if metrics enabled
   135      environment:
   136        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
   137      volumes:
   138        - ./sequencer.keystore:/pk/sequencer.keystore
   139        - ./aggregator.keystore:/pk/aggregator.keystore
   140        - ./config/test.node.config.toml:/app/config.toml
   141        - ./config/test.genesis.config.json:/app/genesis.json
   142      command:
   143        - "/bin/sh"
   144        - "-c"
   145        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components eth-tx-manager"
   146  
   147    supernets2-l2gaspricer:
   148      container_name: supernets2-l2gaspricer
   149      image: supernets2-node
   150      environment:
   151        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-pool-db
   152      volumes:
   153        - ./test.keystore:/pk/keystore
   154        - ./config/test.node.config.toml:/app/config.toml
   155        - ./config/test.genesis.config.json:/app/genesis.json
   156      command:
   157        - "/bin/sh"
   158        - "-c"
   159        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components l2gaspricer"
   160  
   161    supernets2-state-db:
   162      container_name: supernets2-state-db
   163      image: postgres
   164      deploy:
   165        resources:
   166          limits:
   167            memory: 2G
   168          reservations:
   169            memory: 1G
   170      ports:
   171        - 5432:5432
   172      volumes:
   173        - ../db/scripts/init_prover_db.sql:/docker-entrypoint-initdb.d/init.sql
   174      environment:
   175        - POSTGRES_USER=state_user
   176        - POSTGRES_PASSWORD=state_password
   177        - POSTGRES_DB=state_db
   178      command:
   179        - "postgres"
   180        - "-N"
   181        - "500"
   182  
   183    supernets2-pool-db:
   184      container_name: supernets2-pool-db
   185      image: postgres
   186      deploy:
   187        resources:
   188          limits:
   189            memory: 2G
   190          reservations:
   191            memory: 1G
   192      ports:
   193        - 5433:5432
   194      environment:
   195        - POSTGRES_USER=pool_user
   196        - POSTGRES_PASSWORD=pool_password
   197        - POSTGRES_DB=pool_db
   198      command:
   199        - "postgres"
   200        - "-N"
   201        - "500"
   202  
   203    supernets2-event-db:
   204      container_name: supernets2-event-db
   205      image: postgres
   206      deploy:
   207        resources:
   208          limits:
   209            memory: 2G
   210          reservations:
   211            memory: 1G
   212      ports:
   213        - 5435:5432
   214      volumes:
   215        - ../db/scripts/init_event_db.sql:/docker-entrypoint-initdb.d/init.sql
   216      environment:
   217        - POSTGRES_USER=event_user
   218        - POSTGRES_PASSWORD=event_password
   219        - POSTGRES_DB=event_db
   220      command:
   221        - "postgres"
   222        - "-N"
   223        - "500"
   224  
   225    supernets2-explorer-l1:
   226      container_name: supernets2-explorer-l1
   227      image: hermeznetwork/hermez-node-blockscout:latest
   228      ports:
   229        - 4000:4000
   230      environment:
   231        - NETWORK=ETH
   232        - SUBNETWORK=Local Ethereum
   233        - COIN=ETH
   234        - ETHEREUM_JSONRPC_VARIANT=geth
   235        - ETHEREUM_JSONRPC_HTTP_URL=http://supernets2-mock-l1-network:8545
   236        - DATABASE_URL=postgres://l1_explorer_user:l1_explorer_password@supernets2-explorer-l1-db:5432/l1_explorer_db
   237        - ECTO_USE_SSL=false
   238        - MIX_ENV=prod
   239      command:
   240        - "/bin/sh"
   241        - "-c"
   242        - "mix do ecto.create, ecto.migrate; mix phx.server"
   243  
   244    supernets2-explorer-l1-db:
   245      container_name: supernets2-explorer-l1-db
   246      image: postgres
   247      ports:
   248        - 5435:5432
   249      environment:
   250        - POSTGRES_USER=l1_explorer_user
   251        - POSTGRES_PASSWORD=l1_explorer_password
   252        - POSTGRES_DB=l1_explorer_db
   253      command:
   254        - "postgres"
   255        - "-N"
   256        - "500"
   257  
   258    supernets2-explorer-l2:
   259      container_name: supernets2-explorer-l2
   260      image: hermeznetwork/hermez-node-blockscout:latest
   261      ports:
   262        - 4001:4000
   263      environment:
   264        - NETWORK=POE
   265        - SUBNETWORK=Polygon Hermez
   266        - COIN=ETH
   267        - ETHEREUM_JSONRPC_VARIANT=geth
   268        - ETHEREUM_JSONRPC_HTTP_URL=http://supernets2-explorer-json-rpc:8124
   269        - DATABASE_URL=postgres://l2_explorer_user:l2_explorer_password@supernets2-explorer-l2-db:5432/l2_explorer_db
   270        - ECTO_USE_SSL=false
   271        - MIX_ENV=prod
   272        - LOGO=/images/blockscout_logo.svg
   273        - LOGO_FOOTER=/images/blockscout_logo.svg
   274      command:
   275        - "/bin/sh"
   276        - "-c"
   277        - "mix do ecto.create, ecto.migrate; mix phx.server"
   278  
   279    supernets2-explorer-json-rpc:
   280      container_name: supernets2-explorer-json-rpc
   281      image: supernets2-node
   282      ports:
   283        - 8124:8124
   284        - 8134:8134 # needed if WebSockets enabled
   285      environment:
   286        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
   287        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-pool-db
   288        - SUPERNETS2_NODE_RPC_PORT=8124
   289        - SUPERNETS2_NODE_RPC_WEBSOCKETS_PORT=8134
   290      volumes:
   291        - ./config/test.node.config.toml:/app/config.toml
   292        - ./config/test.genesis.config.json:/app/genesis.json
   293      command:
   294        - "/bin/sh"
   295        - "-c"
   296        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components rpc --http.api eth,net,debug,supernets2,txpool,web3"
   297  
   298    supernets2-explorer-l2-db:
   299      container_name: supernets2-explorer-l2-db
   300      image: postgres
   301      ports:
   302        - 5436:5432
   303      environment:
   304        - POSTGRES_USER=l2_explorer_user
   305        - POSTGRES_PASSWORD=l2_explorer_password
   306        - POSTGRES_DB=l2_explorer_db
   307      command: [ "postgres", "-N", "500" ]
   308  
   309    supernets2-mock-l1-network:
   310      container_name: supernets2-mock-l1-network
   311      image: hermeznetwork/geth-supernets2-contracts:v0.0.1
   312      ports:
   313        - 8545:8545
   314        - 8546:8546
   315      command:
   316        - "--http"
   317        - "--http.api"
   318        - "admin,eth,debug,miner,net,txpool,personal,web3"
   319        - "--http.addr"
   320        - "0.0.0.0"
   321        - "--http.corsdomain"
   322        - "*"
   323        - "--http.vhosts"
   324        - "*"
   325        - "--ws"
   326        - "--ws.origins"
   327        - "*"
   328        - "--ws.addr"
   329        - "0.0.0.0"
   330        - "--dev"
   331        - "--datadir"
   332        - "/geth_data"
   333        - "--syncmode"
   334        - "full"
   335        - "--rpc.allow-unprotected-txs"
   336  
   337    supernets2-prover:
   338      container_name: supernets2-prover
   339      image: hermeznetwork/zkevm-prover:v1.1.3-RC2-fork.4
   340      ports:
   341        # - 50051:50051 # Prover
   342        - 50052:50052 # Mock prover
   343        - 50061:50061 # MT
   344        - 50071:50071 # Executor
   345      volumes:
   346        - ./config/test.prover.config.json:/usr/src/app/config.json
   347      command: >
   348        zkProver -c /usr/src/app/config.json
   349  
   350    zkprover-mock:
   351      container_name: zkprover-mock
   352      image: hermeznetwork/zkprover-mock:latest
   353      ports:
   354        - 43061:43061 # MT
   355        - 43071:43071 # Executor
   356      volumes:
   357        - ./vectors/src:/app/testvectors
   358      command: >
   359        /app/zkprover-mock server --statedb-port 43061 --executor-port 43071 --test-vector-path /app/testvectors
   360  
   361    supernets2-approve:
   362      container_name: supernets2-approve
   363      image: supernets2-node
   364      environment:
   365        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-state-db
   366      volumes:
   367        - ./sequencer.keystore:/pk/keystore
   368        - ./config/test.node.config.toml:/app/config.toml
   369        - ./config/test.genesis.config.json:/app/genesis.json
   370      command:
   371        - "/bin/sh"
   372        - "-c"
   373        - "/app/supernets2-node approve --network custom --custom-network-file /app/genesis.json --key-store-path /pk/keystore --pw testonly --am 115792089237316195423570985008687907853269984665640564039457584007913129639935 -y --cfg /app/config.toml"
   374  
   375    supernets2-permissionless-db:
   376      container_name: supernets2-permissionless-db
   377      image: postgres
   378      deploy:
   379        resources:
   380          limits:
   381            memory: 2G
   382          reservations:
   383            memory: 1G
   384      ports:
   385        - 5434:5432
   386      volumes:
   387        - ../db/scripts/single_db_server.sql:/docker-entrypoint-initdb.d/init.sql
   388      environment:
   389        - POSTGRES_USER=test_user
   390        - POSTGRES_PASSWORD=test_password
   391        - POSTGRES_DB=test_db
   392      command:
   393        - "postgres"
   394        - "-N"
   395        - "500"
   396  
   397    supernets2-permissionless-node:
   398      container_name: supernets2-permissionless-node
   399      image: supernets2-node
   400      ports:
   401        - 8125:8125
   402      environment:
   403        - SUPERNETS2_NODE_ISTRUSTEDSEQUENCER=false
   404        - SUPERNETS2_NODE_STATEDB_USER=test_user
   405        - SUPERNETS2_NODE_STATEDB_PASSWORD=test_password
   406        - SUPERNETS2_NODE_STATEDB_NAME=state_db
   407        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-permissionless-db
   408        - SUPERNETS2_NODE_POOL_DB_USER=test_user
   409        - SUPERNETS2_NODE_POOL_DB_PASSWORD=test_password
   410        - SUPERNETS2_NODE_POOL_DB_NAME=pool_db
   411        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-permissionless-db
   412        - SUPERNETS2_NODE_RPC_PORT=8125
   413        - SUPERNETS2_NODE_RPC_SEQUENCERNODEURI=http://supernets2-json-rpc:8123
   414        - SUPERNETS2_NODE_MTCLIENT_URI=supernets2-permissionless-prover:50061
   415        - SUPERNETS2_NODE_EXECUTOR_URI=supernets2-permissionless-prover:50071
   416      volumes:
   417        - ./config/test.node.config.toml:/app/config.toml
   418        - ./config/test.genesis.config.json:/app/genesis.json
   419      command:
   420        - "/bin/sh"
   421        - "-c"
   422        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components \"rpc,synchronizer\""
   423  
   424  
   425    supernets2-permissionless-node-forced-DAC:
   426      container_name: supernets2-permissionless-node-forced-DAC
   427      image: supernets2-node
   428      ports:
   429        - 8125:8125
   430      environment:
   431        - SUPERNETS2_NODE_ISTRUSTEDSEQUENCER=false
   432        - SUPERNETS2_NODE_STATEDB_USER=test_user
   433        - SUPERNETS2_NODE_STATEDB_PASSWORD=test_password
   434        - SUPERNETS2_NODE_STATEDB_NAME=state_db
   435        - SUPERNETS2_NODE_STATEDB_HOST=supernets2-permissionless-db
   436        - SUPERNETS2_NODE_POOL_DB_USER=test_user
   437        - SUPERNETS2_NODE_POOL_DB_PASSWORD=test_password
   438        - SUPERNETS2_NODE_POOL_DB_NAME=pool_db
   439        - SUPERNETS2_NODE_POOL_DB_HOST=supernets2-permissionless-db
   440        - SUPERNETS2_NODE_RPC_PORT=8125
   441        - SUPERNETS2_NODE_RPC_SEQUENCERNODEURI=http://supernets2-json-rpc:8123
   442        - SUPERNETS2_NODE_SYNCHRONIZER_TRUSTEDSEQUENCERURL=http://you-cant-touch-this:8123
   443        - SUPERNETS2_NODE_MTCLIENT_URI=supernets2-permissionless-prover:50061
   444        - SUPERNETS2_NODE_EXECUTOR_URI=supernets2-permissionless-prover:50071
   445      volumes:
   446        - ./config/test.node.config.toml:/app/config.toml
   447        - ./config/test.genesis.config.json:/app/genesis.json
   448      command:
   449        - "/bin/sh"
   450        - "-c"
   451        - "/app/supernets2-node run --network custom --custom-network-file /app/genesis.json --cfg /app/config.toml --components \"rpc,synchronizer\""
   452  
   453    supernets2-permissionless-prover:
   454      container_name: supernets2-permissionless-prover
   455      image: hermeznetwork/zkevm-prover:v1.1.3-RC2-fork.4
   456      ports:
   457        # - 50058:50058 # Prover
   458        - 50059:50052 # Mock prover
   459        - 50068:50061 # MT
   460        - 50078:50071 # Executor
   461      volumes:
   462        - ./config/test.permissionless.prover.config.json:/usr/src/app/config.json
   463      command: >
   464        zkProver -c /usr/src/app/config.json
   465  
   466    supernets2-metrics:
   467      image: prom/prometheus:v2.39.1
   468      container_name: supernets2-metrics
   469      restart: unless-stopped
   470      ports:
   471        - 9090:9090
   472      command:
   473        - --config.file=/etc/prometheus/prometheus.yml
   474        - --web.enable-lifecycle
   475      volumes:
   476        - ../config/metrics/prometheus:/etc/prometheus
   477  
   478    supernets2-data-availability-db:
   479      container_name: supernets2-data-availability-db
   480      restart: unless-stopped
   481      image: postgres
   482      healthcheck:
   483        test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
   484        interval: 10s
   485        timeout: 5s
   486        retries: 5
   487      ports:
   488        - 5444:5432
   489      environment:
   490        - POSTGRES_USER=committee_user
   491        - POSTGRES_PASSWORD=committee_password
   492        - POSTGRES_DB=committee_db
   493      command:
   494        - "postgres"
   495        - "-N"
   496        - "500"