菜单

Docker Compose 配置

相关源文件

目的与范围

本文档详细介绍了 Base Node 系统中用于编排容器化服务的 Docker Compose 配置。它解释了构成功能性 Base 节点的基本容器的结构、网络和交互。有关这些服务使用的 Docker 镜像的信息,请参阅 Docker 镜像。有关持久化存储管理方式的详细信息,请参阅 卷管理

Docker Compose 结构概述

Base Node 使用 Docker Compose 来协调多个容器化服务,这些服务共同构成 Base 网络上的完整节点。该系统旨在易于部署,同时提供执行客户端选择的灵活性。

来源:docker-compose.yml1-32 README.md66-69

服务组件

Docker Compose 配置定义了两个主要服务,它们协同工作以运行 Base 节点。

服务描述目的
execution执行客户端容器运行 L2 执行引擎(Geth、Reth 或 Nethermind)
nodeRollup 节点容器运行 op-node,该节点从 L1 数据派生 L2 块

这两个服务都基于相同的 Dockerfile 构建,但通过各自的入口点脚本运行不同的进程。

来源:docker-compose.yml2-31

执行客户端配置

execution 服务配置并运行所选的执行客户端(Geth、Reth 或 Nethermind)。

执行服务的关键配置

  • 构建上下文:使用 CLIENT 环境变量指定的 Dockerfile
  • 入口点:运行 execution-entrypoint 脚本来初始化和启动执行客户端
  • 数据持久化:将主机卷挂载到容器内的 /data
  • 环境变量:使用 NETWORK_ENV 指定的文件的环境变量

来源:docker-compose.yml2-16

OP 节点配置

node 服务运行 OP Stack 节点(op-node),该节点处理 Layer 1 数据以派生 Layer 2 链。

node 服务的关键配置

  • 构建上下文:使用与执行服务相同的 Dockerfile
  • 依赖项:依赖于执行服务可用
  • 入口点:运行 op-node-entrypoint 脚本来初始化和启动 op-node
  • 环境变量:使用与执行服务相同的环境变量文件

来源:docker-compose.yml17-31

端口映射

Docker Compose 文件公开了各种端口以方便与节点进行交互。

容器端口主机端口服务描述
85458545executionJSON-RPC API 端点
85468546executionWebSocket API 端点
60607301executionMetrics 端点
3030330303 (TCP/UDP)executionP2P 网络通信
85457545nodeJSON-RPC API 端点
92229222 (TCP/UDP)nodeP2P 网络通信
73007300nodeMetrics 端点
60606060nodepprof 调试端点

这些端口映射允许外部系统与 Base 节点的服务进行交互。

来源:docker-compose.yml6-11 docker-compose.yml23-28

网络架构

Docker Compose 网络创建了一个隔离的环境,其中:

  1. node 服务连接到环境变量文件中指定的外部以太坊 L1 节点。
  2. node 服务通过内部 Docker 网络与 execution 服务通信。
  3. 两个服务都公开 P2P 端口以与更广泛的 Base 网络进行通信。
  4. 外部用户可以通过公开的 RPC 和 WebSocket 端点与节点进行交互。

来源:docker-compose.yml6-11 docker-compose.yml23-28 README.md57-69

环境配置

Docker Compose 配置使用环境变量文件来设置特定网络的参数。支持两种网络选项:

  1. 主网 (.env.mainnet)
  2. Sepolia 测试网 (.env.sepolia)

环境变量文件通过 NETWORK_ENV 环境变量进行选择。

两个服务都使用相同的环境变量文件,确保节点配置的一致性。

来源:docker-compose.yml15-16 docker-compose.yml30-31 README.md58-64

卷管理

数据持久化是通过 execution 服务中的卷挂载来管理的。

主机目录使用 HOST_DATA_DIR 环境变量指定(如 README 中所述,默认为 ${PROJECT_ROOT}/geth-data)。

来源:docker-compose.yml13-14 README.md91-92

客户端选择

Base Node 支持三种执行客户端。

  • Geth
  • Reth
  • Nethermind

客户端使用 CLIENT 环境变量进行选择。

此变量决定了用于构建两个服务容器镜像的 Dockerfile。

来源:docker-compose.yml5 README.md71-78

启动节点

要使用 Docker Compose 配置启动 Base 节点:

  1. 设置 NETWORK_ENV 环境变量以指定网络。
  2. 可选地设置 CLIENT 环境变量以选择执行客户端。
  3. 运行 docker compose up --build

示例

这将根据 Docker Compose 文件中的配置构建并启动容器。

来源:README.md58-69 README.md71-78

单容器模式

虽然默认配置使用两个独立的容器,但也可以使用 supervisord 将两个服务运行在单个容器中。

这需要调整环境变量,以处理两个服务都在 localhost 上的事实。

来源:README.md96-106

连接验证

启动节点后,您可以通过查询 JSON-RPC 端点来验证其是否正常工作。

来源:README.md80-85