Source: https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/configurations/docker-compose/ Documentation version: v5.3.2 # Docker Compose 配置说明 本页说明悦数图数据库开发版配套`compose.yaml`中的服务、端口、环境变量和数据目录。首次部署请按[使用 Docker Compose 部署开发版](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/)操作;调整配置后,按[修改与验证配置](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/configurations/docker-compose/#apply)应用变更。 ## 配置文件 下载 [compose.yaml](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/files/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 密码](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#root-password);更改已有密码时,按[修改已有悦数图数据库开发版实例的 root 密码](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#change-root-password)操作。 ## 服务与配置字段 `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 服务配置](https://docs.docker.com/reference/compose-file/services/)。修改 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`映射中冒号左侧的宿主机端口,见[从开发机连接](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/configurations/docker-compose/#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 服务。悦数图管理默认一起启动,登录页使用相同地址。操作步骤见[连接并完成首次查询](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#connect)。 ### 从开发机连接 配套文件默认映射以下端口: | 开发机端口 | 容器端口 | 用途 | `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`访问。修改后按[修改与验证配置](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/configurations/docker-compose/#apply)应用变更。 使用默认端口映射时,开发机上的 Graph 客户端(例如 SDK)可连接`127.0.0.1:9669`,并使用悦数图数据库开发版用户名和密码登录。如果修改了`9669:9669`左侧的开发机端口,请改用修改后的端口。内置悦数图数据库控制台通过 Graph HTTP 端口访问,浏览器地址和登录方法见[连接并完成首次查询](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#web-console)。 `7001:7001`在`studio`服务下配置,将悦数图管理的网页端口映射到开发机。使用方法见[连接并完成首次查询](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#connect)。 ## 数据、日志与示例目录 以 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/`容器路径。文件下载和保存方法见[准备算法示例数据](https://dev-docs.yueshu.com.cn/v5.3.2/analytic/algorithms/prepare-data/)。 `studio`服务使用 Docker 卷`studio-data`保存数据,不写入上述`./data`目录。 更换左侧目录会改变容器读取的数据位置,不会自动搬迁原数据。需要继续使用原数据时,保留原目录映射。停止和移除容器时的数据保留规则见[停止和重新启动悦数图数据库开发版](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#stop-start)。 ## 修改与验证配置 所有命令均在开发机终端、`compose.yaml`所在目录中执行。应用配置可能重新创建容器,请在没有查询任务运行时操作。PowerShell 写法见[启动命令说明](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#powershell)。 1. 修改`compose.yaml`,保存文件。首次部署只需设置密码,其他值保留配套配置。 2. 检查配置语法: ```` docker compose config --quiet ```` 没有输出且命令成功结束表示配置检查通过,不代表悦数图数据库开发版服务已经可用。完整配置输出可能包含密码,请勿直接分享。 3. 应用配置: ```` ACCEPT_EULA=Y docker compose up -d ```` 如果不需要容器版悦数图管理,改用`ACCEPT_EULA=Y docker compose up -d --scale studio=0`。每次执行`up`时都需指定该参数;参数含义见 [Docker Compose up](https://docs.docker.com/reference/cli/docker/compose/up/)。 `docker compose restart`不会应用修改后的容器配置或环境变量。 4. 查看容器状态: ```` docker compose ps --all ```` 按[检查服务状态](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#check-services)核对结果,再[连接悦数图数据库开发版](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#connect)运行查询。启动失败时,见[部署问题排查](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/deploy/#troubleshooting)。