Docker部署

本文档介绍TuGraph Compile及TuGraph Runtime的Docker镜像的创建、下载。

1.简介

  • TuGraph Compile Image:提供编译环境,可以用于TuGraph的编译,测试;

  • TuGraph Runtime Image:提供二进制可运行环境,附带TuGraph库和可执行文件;

  • TuGraph Mini Runtime Image: 提供二进制可运行环境,不包含TuGraph中Java、Python相关的功能,无C++ plugin编译运行,仅so上传。

2.现有Docker Image

2.1.镜像下载方式

镜像托管在DockerHub,可直接下载使用。

最新版本的Docker地址参见 文档地图的”TuGraph最新版本”章节。

2.2.命名规范

2.2.1.TuGraph Compile Image

提供编译环境,可以用于TuGraph的编译。

tugraph/tugraph-compile-[os name & version]:[tugraph compile version]

例如: tugraph/tugraph-compile-centos7:1.2.0

2.2.2.TuGraph Runtime Image

提供二进制可运行环境,附带TuGraph库和可执行文件。

tugraph/tugraph-runtime-[os name & version]:[tugraph-runtime version]

例如:tugraph/tugraph-runtime-centos7:3.4.0

2.2.3.TuGraph Mini Runtime Image

提供二进制可运行环境,不包含TuGraph种Java、Python相关的功能,无C++ plugin编译运行,仅so上传。

tugraph/tugraph-mini-runtime-[os name & version]:[tugraph-runtime version]

例如: tugraph/tugraph-mini-runtime-centos7:3.4.0

2.3.常见Docker操作

Docker由Dockerfile生成,注意创建镜像需要下载依赖,因此网络问题可能会导致创建较慢或者创建失败。注意不要覆盖镜像,除非tag为 latest

创建Compile镜像

docker build -f tugraph-compile-centos7-Dockerfile -t tugraph/tugraph-compile-centos7:1.2.0 .

创建Runtime / Mini Runtine镜像

docker build --build-arg FILEPATH="${rpm_path_in_oss}" --build-arg FILENAME="${rpm_name}" -f tugraph-compile-centos7-Dockerfile -t tugraph/tugraph-runtime-centos7:1.2.0 .

修改镜像名称

docker tag ${image_name}:${image_tag} tugraph/tugraph-runtime-centos7:3.3.0

上传镜像

docker push tugraph/tugraph-compile-centos7:1.2.0 .

获取镜像

docker pull tugraph/tugraph-compile-centos7:1.2.0

导出镜像

docker save ${image_name}:${image_tag} | gzip > lgraph_latest.tar.gz

导入镜像

docker load --input lgraph_latest.tar.gz

其他Docker操作请参考docker官方文档

2.4. M1芯片支持

在 M1 芯片的机器上运行 amd64 容器可能造成未知错误。TuGraph提供 arm64 的镜像供 M1 机器使用。 包含compile和runtime两种镜像。

tugraph-runtime-centos7:3.6.0tugraph-compile-centos7:1.2.7及之后,tugraph-runtime-centos7tugraph-compile-centos7提供linux/amd64和linux/arm64/v8两种架构的镜像,可以在 M1 机器上通过docker pull获取arm64架构镜像。

3. 使用和开发TuGraph-DB Docker镜像时的最佳实践

在您刚开始为TuGraph做出贡献时,请仔细阅读以下要点,并遵循它们。

  • 为了避免过多的Docker Layer,请尽量像现有的Dockerfile一样单行的写ENV和RUN将您的依赖项添加到Docker中。

  • 对于您需要构建依赖项的软件包/资源,请使用原始的软件包/资源,而不是在没有VCS跟踪的情况下修改这些资源。之后联系TuGraph团队将其上传到OSS以加速构建过程,如同您在Dockerfiles中看到的URL一样。

  • 为了使开发更加高效,最好从Base TuGraph编译镜像添加依赖项开始,完成开发确认依赖没问题后在Dockerfile中重新复制该过程。

  • CI使用了Docker镜像。如果您的CI失败,请检查依赖项问题。