Docker Compose 配置说明¶
本页说明悦数图数据库开发版配套compose.yaml中的服务、端口、环境变量和数据目录。首次部署请按使用 Docker Compose 部署开发版操作;调整配置后,按修改与验证配置应用变更。
配置文件¶
下载 compose.yaml,保存在部署目录中。服务、镜像地址、版本、初始密码、网络和数据目录均在这个文件中配置。
镜像¶
各服务的完整镜像地址和版本直接写在image字段中。例如:
services:
metad:
image: yueshu-registry.cn-hangzhou.cr.aliyuncs.com/yueshu/yueshu-metad-dev:5.3.2
studio:
image: vesoft/nebula-studio:5.3.2
镜像仓库、名称和标签以配套文件的image字段为准。首次部署保留文件中的配置值;更换镜像时,需要确认服务和工具的版本兼容。
容器环境变量¶
下表列出compose.yaml中设置的环境变量及其配置值。这些变量定义在对应服务的environment字段中,由 Docker Compose 传入容器:
| 变量 | 配置值 | 用途 |
|---|---|---|
ACCEPT_EULA |
"Y" |
表示接受最终用户许可协议(EULA);Meta 服务启动时检查此值。 |
ROOT_PASSWORD |
YueshuGraph01 |
ngctl首次初始化时设置的root密码;已有数据时应填写现有密码。 |
SERVICE_GROUP |
default_svcgrp |
ngctl初始化的服务组名称;已有数据时保留原名称。 |
META_HOST、META_PORT |
graph-cluster、9559 |
ngctl连接 Meta 服务所用的地址和端口。 |
SERVICE_HOST |
graph-cluster |
ngctl注册 Graph 和 Storage 服务时使用的主机名。 |
TZ |
UTC |
metad和ngctl容器的时区;本文件未将其传给其他容器。 |
STUDIO_GRAPHD_DEFAULT_HOST、STUDIO_GRAPHD_DEFAULT_PORT |
graph-cluster、9669 |
悦数图管理登录页默认填写的 Graph 服务地址和端口。 |
首次部署前,在services.ngctl.environment.ROOT_PASSWORD设置初始密码。密码至少 8 个字符,包含大写字母、小写字母和数字。转义规则见设置 root 密码;更改已有密码时,按修改已有悦数图数据库开发版实例的 root 密码操作。
服务与配置字段¶
services下的每一项定义一个容器服务:
| 服务名称 | 用途 |
|---|---|
Meta 服务(metad) |
管理主机、服务组、分片分布和用户身份等信息。 |
Storage 服务(storaged) |
保存图数据和服务组的系统信息。 |
Graph 服务(graphd) |
接收连接并执行 GQL 查询。 |
ngctl |
设置首次登录密码并初始化服务组。 |
ngql |
提供交互式查询客户端。 |
studio |
图形界面;默认与悦数图数据库开发版一起启动。 |
配套文件使用以下配置字段:
| 字段 | 本文件中的作用 |
|---|---|
image |
指定容器使用的镜像。 |
pull_policy: missing |
本地缺少镜像时拉取;不会在每次启动时刷新已有的同标签镜像。 |
container_name |
指定容器名称。 |
environment |
向容器传入环境变量,例如初始化密码。 |
entrypoint |
为工具容器指定启动入口。 |
command |
为悦数图数据库开发版服务提供启动参数,或为工具容器指定脚本。 |
volumes |
将开发机目录或 Docker 卷映射到容器目录。 |
ports |
将容器端口映射到开发机。 |
networks、network_mode |
设置容器之间的网络连接方式。 |
depends_on、healthcheck |
设置启动依赖和检查条件。 |
restart: unless-stopped |
设置容器重启策略;手工停止的容器保持停止。 |
字段语法见 Docker Compose 服务配置。修改 YAML 时使用空格缩进,保持字段所属层级。
悦数图数据库开发版启动参数¶
在compose.yaml的services下,metad、storaged和graphd通过各自的command列表设置启动参数:
| 参数 | 配置值 | 用途 |
|---|---|---|
--meta_server_addrs |
graph-cluster:9559 |
悦数图数据库开发版服务连接 Meta 服务所用的地址。 |
--host |
graph-cluster |
三个服务使用的主机名,与metad.networks中配置的网络别名一致。 |
--port |
metad:9559;storaged:9779;graphd:9669 |
对应服务在容器网络中使用的端口。 |
--data_path |
metad:/data/meta;storaged:/data/storage |
容器内的数据保存目录。 |
--memory_dynamic_reserved_gb |
storaged、graphd:1 |
Graph 和 Storage 服务各自动态计算内存上限时,从系统可用内存中预留 1 GiB 给其他进程。 |
--redirect_stdout |
metad:false |
不将标准输出和标准错误重定向到文件,可通过docker compose logs metad查看容器输出。 |
修改服务的主机名或容器端口时,需同步调整ngctl服务的连接和注册配置。
如果只需更改从开发机访问的端口,修改ports映射中冒号左侧的宿主机端口,见从开发机连接。
网络与连接地址¶
| 名称 | 含义 |
|---|---|
default_svcgrp |
悦数图数据库开发版服务组名称 |
graph-cluster-dev |
compose.yaml中的网络标识;Docker 创建的实际网络名通常带有 Compose 项目前缀 |
graph-cluster |
metad在该网络中的别名,供其他容器连接悦数图数据库开发版服务 |
Graph 服务和 Storage 服务配置了network_mode: service:metad,共用 Meta 服务的容器网络。因此,端口映射集中写在metad下。
初始化脚本在服务组中注册名为graph-cluster的主机。这里的主机指悦数图数据库开发版中的主机记录;宿主机指运行 Docker 的物理机或虚拟机。
开发版的服务组只允许注册一个主机。Graph 和 Storage 服务使用同一主机名和各自的端口注册。ngctl和ngql等工具容器不计入注册主机数量。
配套ngql在容器网络中使用graph-cluster:9669连接 Graph 服务。悦数图管理默认一起启动,登录页使用相同地址。操作步骤见连接并完成首次查询。
从开发机连接¶
配套文件默认映射以下端口:
| 开发机端口 | 容器端口 | 用途 |
|---|---|---|
9559 |
9559 |
Meta 服务 |
9779 |
9779 |
Storage 服务 |
9669 |
9669 |
Graph 查询服务 |
19669 |
19669 |
Graph HTTP 服务和内置悦数图数据库控制台 |
7001 |
7001 |
悦数图管理网页界面 |
例如,"9669:9669"中冒号左侧是开发机端口,右侧是容器端口。如果开发机端口已被占用,可以只修改左侧。要将 Graph HTTP 服务的开发机端口改为19670,只需在metad的ports列表中将"19669:19669"那一行改为:
- "19670:19669"
此时,容器内的 Graph HTTP 端口仍为19669,开发机应通过19670访问。修改后按修改与验证配置应用变更。
使用默认端口映射时,开发机上的 Graph 客户端(例如 SDK)可连接127.0.0.1:9669,并使用悦数图数据库开发版用户名和密码登录。如果修改了9669:9669左侧的开发机端口,请改用修改后的端口。内置悦数图数据库控制台通过 Graph HTTP 端口访问,浏览器地址和登录方法见连接并完成首次查询。
7001:7001在studio服务下配置,将悦数图管理的网页端口映射到开发机。使用方法见连接并完成首次查询。
数据、日志与示例目录¶
以 Meta 数据目录为例:
volumes:
- ./data/meta:/data/meta
冒号左侧是开发机目录,右侧是容器目录。在配套配置中,./表示compose.yaml所在目录。
| 开发机目录 | 容器目录 | 保存内容 |
|---|---|---|
./data/meta |
/data/meta |
Meta 数据 |
./data/storage |
/data/storage |
Storage 数据,包括图数据 |
./logs/meta |
/usr/local/nebula/logs |
Meta 日志 |
./logs/storage |
/usr/local/nebula/logs |
Storage 日志 |
./logs/graph |
/usr/local/nebula/logs |
Graph 日志 |
./examples |
/examples |
算法示例 CSV 文件和导出结果,挂载到graphd容器 |
三个日志目录分别映射到对应容器的/usr/local/nebula/logs,开发机上的日志仍按服务分开保存。
算法文件保存在开发机的examples/algorithms/下;GQL 导入和导出语句使用/examples/algorithms/容器路径。文件下载和保存方法见准备算法示例数据。
studio服务使用 Docker 卷studio-data保存数据,不写入上述./data目录。
更换左侧目录会改变容器读取的数据位置,不会自动搬迁原数据。需要继续使用原数据时,保留原目录映射。停止和移除容器时的数据保留规则见停止和重新启动悦数图数据库开发版。
修改与验证配置¶
所有命令均在开发机终端、compose.yaml所在目录中执行。应用配置可能重新创建容器,请在没有查询任务运行时操作。PowerShell 写法见启动命令说明。
- 修改
compose.yaml,保存文件。首次部署只需设置密码,其他值保留配套配置。 -
检查配置语法:
docker compose config --quiet没有输出且命令成功结束表示配置检查通过,不代表悦数图数据库开发版服务已经可用。完整配置输出可能包含密码,请勿直接分享。
-
应用配置:
ACCEPT_EULA=Y docker compose up -d如果不需要容器版悦数图管理,改用
ACCEPT_EULA=Y docker compose up -d --scale studio=0。每次执行up时都需指定该参数;参数含义见 Docker Compose up。docker compose restart不会应用修改后的容器配置或环境变量。 -
查看容器状态:
docker compose ps --all按检查服务状态核对结果,再连接悦数图数据库开发版运行查询。启动失败时,见部署问题排查。