version: '3.1' services: optimism-dtl: image: ethereumoptimism/data-transport-layer:${IMAGE_TAG__DTL:-latest} restart: unless-stopped user: root entrypoint: - /bin/sh - -c - "/scripts/dtl-start.sh" env_file: - ./optimism/env/dtl.env - .env volumes: - optimism-dtl:/db - ./optimism/scripts/:/scripts/ environment: - "SYNC_SOURCE=l2" - "DATA_TRANSPORT_LAYER__RPC_ENDPOINT=${OPTIMISM_L2_URL}" networks: - chains optimism-l2geth: image: ethereumoptimism/l2geth:${IMAGE_TAG__L2GETH:-latest} restart: unless-stopped stop_grace_period: 3m user: root entrypoint: - /bin/sh - -c - "/scripts/l2geth-init.sh && /scripts/l2geth-start.sh" env_file: - ./optimism/env/l2geth.env - .env volumes: - optimism-geth:/geth - ./optimism/scripts/:/scripts/ expose: - 8545 # http - 8546 # ws - 33289 # P2P ports: - "33289:33289" - "33289:33289/udp" environment: - "NODE_TYPE=archive" - "SYNC_SOURCE=l2" - "WS_PORT=8546" networks: - chains # op-geth: # image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.11.2-13ee9ab # restart: unless-stopped # stop_grace_period: 5m # entrypoint: /scripts/op-geth-start.sh # env_file: # - ./envs/${NETWORK_NAME}/op-geth.env # - .env # environment: # - "BEDROCK_SEQUENCER_HTTP=https://mainnet-sequencer.optimism.io" # - "BEDROCK_DATADIR=/geth" # volumes: # - ./optimism/scripts/:/scripts # - shared:/shared # - op_geth:/geth # networks: # - chains # labels: # - "prometheus-scrape.enabled=true" # - "prometheus-scrape.port=6060" # - "prometheus-scrape.job_name=optimism" # - "prometheus-scrape.metrics_path=/debug/metrics/prometheus" # - "traefik.enable=true" # - "traefik.http.middlewares.optimism-archive-stripprefix.stripprefix.prefixes=/optimism-archive" # - "traefik.http.services.optimism-archive.loadbalancer.server.port=8545" # - "traefik.http.routers.optimism-archive.entrypoints=websecure" # - "traefik.http.routers.optimism-archive.tls.certresolver=myresolver" # - "traefik.http.routers.optimism-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/optimism-archive`)" # - "traefik.http.routers.optimism-archive.middlewares=optimism-archive-stripprefix, ipwhitelist" op-erigon: image: testinprod/op-erigon restart: unless-stopped stop_grace_period: 5m expose: - "9090" - "8545" - "8551" command: > --private.api.addr=localhost:9090 --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain="*" --http.vhosts="*" --authrpc.addr=0.0.0.0 --authrpc.port=8551 --authrpc.vhosts="*" --authrpc.jwtsecret=/jwtsecret --rollup.sequencerhttp="https://mainnet-sequencer.optimism.io" --rollup.historicalrpc="http://optimism-l2geth:8545" --chain=optimism-mainnet --ws --nodiscover volumes: - erigon-optimism-bedrock:/home/erigon/.local/share/erigon - .jwtsecret:/jwtsecret networks: - chains labels: - "prometheus-scrape.enabled=true" - "prometheus-scrape.port=6060" - "prometheus-scrape.job_name=optimism" - "prometheus-scrape.metrics_path=/debug/metrics/prometheus" - "traefik.enable=true" - "traefik.http.middlewares.optimism-archive-stripprefix.stripprefix.prefixes=/optimism-archive" - "traefik.http.services.optimism-archive.loadbalancer.server.port=8545" - "traefik.http.routers.optimism-archive.entrypoints=websecure" - "traefik.http.routers.optimism-archive.tls.certresolver=myresolver" - "traefik.http.routers.optimism-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/optimism-archive`)" - "traefik.http.routers.optimism-archive.middlewares=optimism-archive-stripprefix, ipwhitelist" op-node: image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.1.0 restart: unless-stopped stop_grace_period: 5m environment: - OPTIMISM_L1_URL=${OPTIMISM_L1_URL} - OP_NODE__RPC_TYPE=${OP_NODE__RPC_TYPE:-basic} command: > op-node --l1=$OPTIMISM_L1_URL --l2=http://op-erigon:8551 --network=mainnet --rpc.addr=0.0.0.0 --rpc.port=9545 --l2.jwt-secret=/jwtsecret --l1.trustrpc --l1.rpckind=$OP_NODE__RPC_TYPE --metrics.enabled --metrics.addr=0.0.0.0 --metrics.port=7300 networks: - chains volumes: - .jwtsecret:/jwtsecret volumes: optimism-dtl: optimism-geth: erigon-optimism-bedrock: