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.0
与tugraph-compile-centos7:1.2.7
及之后,tugraph-runtime-centos7
与tugraph-compile-centos7
提供linux/amd64和linux/arm64/v8两种架构的镜像,可以在 M1 机器上通过docker pull获取arm64架构镜像。
2.5. 运行服务
-
拉取镜像
docker pull tugraph/tugraph-runtime-centos7:${VERSION}
-
启动docker
docker run -d -p 7070:7070 -p 7687:7687 -p 9090:9090 -v /root/tugraph/data:/var/lib/lgraph/data -v /root/tugraph/log:/var/log/lgraph_log \
--name tugraph_demo ${REPOSITORY}:${VERSION}
# ${REPOSITORY}是镜像地址,${VERSION}是版本号。
# 7070是默认的http端口,访问tugraph-db-browser使用。
# 7687是bolt端口,bolt client访问使用。
# 9090是默认的rpc端口,rpc client访问使用。
# /var/lib/lgraph/data是容器内的默认数据目录,/var/log/lgraph_log是容器内的默认日志目录
# 命令将数据目录和日志目录挂 载到了宿主机的/root/tugraph/上进行持久化,您可以根据实际情况修改。
3. 使用和开发TuGraph-DB Docker镜像时的最佳实践
在您刚开始为TuGraph做出贡献时,请仔细阅读以下要点,并遵循它们。
- 为了避免过多的Docker Layer,请尽量像现有的Dockerfile一样单行的写ENV和RUN将您的依赖项添加到Docker中。
- 对于您需要构建依赖项的软件包/资源,请使用原始的软件包/资源,而不是在没有VCS跟踪的情况下修改这些资源。之后联系TuGraph团队将其上传到OSS以加速构建过程,如同您在Dockerfiles中看到的URL一样。
- 为了使开发更加高效,最好从Base TuGraph编译镜像添加依赖项开始,完成开发确认依赖没问题后在Dockerfile中重新复制该过程。
- CI使用了Docker镜像。如果您的CI失败,请检查依赖项问题。