Documentation
version: "3.4"
services:
  l2geth:
    image: ethereumoptimism/l2geth:${IMAGE_TAG__L2GETH:-latest}
    restart: on-failure
    stop_grace_period: 5m
    entrypoint: 
      - /bin/sh
      - -c
      - "/scripts/init-l2geth.sh && /scripts/start-l2geth.sh"
    env_file:
      - ./envs/common/l2geth.env
      - .env
    volumes:
      - geth:/geth
      - ./scripts/:/scripts/
    ports:
      - ${PORT__L2GETH_HTTP:-9991}:8545
      - ${PORT__L2GETH_WS:-9992}:8546

  healthcheck:
    image: ethereumoptimism/replica-healthcheck:${IMAGE_TAG__HEALTHCHECK:-latest}
    restart: unless-stopped
    env_file:
      - ./envs/common/healthcheck.env
      - .env
    ports:
      - ${PORT__HEALTHCHECK_METRICS:-7300}:7300

  op-geth:
    image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101503.2
    restart: unless-stopped
    stop_grace_period: 5m
    entrypoint: /scripts/start-op-geth.sh
    env_file:
      - ./envs/${NETWORK_NAME}/op-geth.env
      - .env
    volumes:
      - ./envs/${NETWORK_NAME}/config:/chainconfig
      - ./scripts/:/scripts
      - shared:/shared
      - op_geth:/geth
      - ./.upgrade-pectra:/upgrade-pectra
    ports:
      - ${PORT__OP_GETH_HTTP:-9993}:8545
      - ${PORT__OP_GETH_WS:-9994}:8546
      - ${PORT__OP_GETH_P2P:-39393}:${PORT__OP_GETH_P2P:-39393}/udp
      - ${PORT__OP_GETH_P2P:-39393}:${PORT__OP_GETH_P2P:-39393}/tcp
    extra_hosts:
      - "host.docker.internal:host-gateway"

  op-node:
    image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.0
    restart: unless-stopped
    stop_grace_period: 5m
    entrypoint: /scripts/start-op-node.sh
    env_file:
      - ./envs/${NETWORK_NAME}/op-node.env
      - .env
    volumes:
      - ./envs/${NETWORK_NAME}/config:/chainconfig
      - ./scripts/:/scripts
      - shared:/shared
      - ./.upgrade-pectra:/upgrade-pectra
    ports:
      - ${PORT__OP_NODE_P2P:-9003}:9003/udp
      - ${PORT__OP_NODE_P2P:-9003}:9003/tcp
      - ${PORT__OP_NODE_HTTP:-9545}:9545
    extra_hosts:
      - "host.docker.internal:host-gateway"

  bedrock-init:
    build:
      context: ./docker/dockerfiles
      dockerfile: Dockerfile.bedrock-init
    entrypoint: /scripts/init-bedrock.sh
    env_file:
      - ./envs/${NETWORK_NAME}/op-geth.env
      - .env
    volumes:
      - ./scripts/:/scripts
      - shared:/shared
      - op_geth:/geth
      - geth:/legacy-geth
      - torrent_downloads:/downloads
      - ./.upgrade-pectra:/upgrade-pectra

  prometheus:
    image: prom/prometheus:${IMAGE_TAG__PROMETHEUS:-latest}
    restart: unless-stopped
    env_file:
      - .env
    volumes:
      - ./docker/prometheus:/etc/prometheus
      - prometheus_data:/prometheus
    ports:
      - ${PORT__PROMETHEUS:-9090}:9090

  grafana:
    image: grafana/grafana:${IMAGE_TAG__GRAFANA:-9.3.0}
    restart: unless-stopped
    env_file:
      -  ./envs/common/grafana.env
    volumes:
      - ./docker/grafana/provisioning/:/etc/grafana/provisioning/:ro
      - ./docker/grafana/dashboards/simple_node_dashboard.json:/var/lib/grafana/dashboards/simple_node_dashboard.json
      - grafana_data:/var/lib/grafana
    ports:
      - ${PORT__GRAFANA:-3000}:3000

  influxdb:
    image: influxdb:${IMAGE_TAG__INFLUXDB:-1.8}
    restart: unless-stopped
    env_file:
      - ./envs/common/influxdb.env
    volumes:
      - ./docker/influxdb/influx_init.iql:/docker-entrypoint-initdb.d/influx_init.iql
      - influxdb_data:/var/lib/influxdb
    ports:
      - ${PORT__INFLUXDB:-8086}:8086

volumes:
  geth:
  prometheus_data:
  grafana_data:
  influxdb_data:
  shared:
  op_geth:
  torrent_downloads: