尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Sourcetrail 如何构建、运行并发布 Linux Docker 开发镜像

Sourcetrail 如何构建、运行并发布 Linux Docker 开发镜像 Sourcetrail 如何构建、运行并发布 Linux Docker 开发镜像【免费下载链接】SourcetrailSourcetrail - free and open-source interactive source explorer项目地址: https://gitcode.com/GitHub_Trending/so/SourcetrailSourcetrail 的 Linux 构建依赖一套预装好 Qt、LLVM/Clang、Boost 等工具链的 Docker 镜像镜像的构建、运行与发布流程记录在 deployment/dockerfiles/README.md 中。本文面向需要维护这套 Linux 开发镜像的读者按仓库提供的三层 Dockerfile 构建镜像用docker run进入容器验证可用再通过docker login/docker push发布到镜像仓库供 CI 构建 Sourcetrail 时直接复用。适用环境是安装了 Docker 的 Linux 主机镜像底层为centos:7。镜像分层与内容仓库在deployment/dockerfiles/linux/下提供三个可构建目录自底向上依次是基础层centos7_64_baseDockerfile基于centos:7通过 yum 安装 devtoolset-7-gcc、wget、git、libxcb 系列、libxkbcommon、sqlite 等构建依赖并手动安装 cmake 3.8.2、maven 3.5.0、Ninjarelease分支自编译设置M2_HOME/opt/maven、JAVA_HOME/usr/lib/jvm/java-openjdk等环境变量。README 列出的软件清单为 Openjdk 1.8.0、Imagemagick、vim、lftp、git、python 2.7、cmake 3.8.2、maven 3.5.0。工具链层centos7_64DockerfileFROM coatisoftware/centos7_64_base在其上从源码构建 QtQTVERSION5.12.6安装到/opt/qt5.12.6、LLVM/ClangARG LLVM_VERSION11.0.0安装到/opt/llvm、Boost1.67.0静态链接安装到/opt/boost以及 linuxdeployqtAppImage 解压到/opt/linuxdeployqt并设置Qt5_DIR/opt/qt5.12.6、Clang_DIR/opt/llvm、BOOST_ROOT/opt/boost、LD_LIBRARY_PATH$Qt5_DIR/lib/环境变量最后创建 uid 为 1000 的builder用户并切换为当前用户WORKDIR为/home/builder。README 记录的软件版本为 Qt 5.12.6、LLVM/Clang 10.0.0、Boost 1.67.0、Ninja。CI 层travis_ciDockerfileFROM coatisoftware/centos7_64_qt_llvm:qt5126-llvm1100复制 ApplicationSettings.xml 到/home/builder/.config/sourcetrail/复制 entrypoint.sh 作为ENTRYPOINT。两处版本描述不一致按文档实际情况并列说明不擅自统一centos7_64/README.md 写 LLVM/Clang 为10.0.0而 centos7_64/Dockerfile 中ARG LLVM_VERSION11.0.0travis_ci 的基础镜像 tag 也是qt5126-llvm1100。以 Dockerfile 实际构建值 11.0.0 为准README 应属未同步。centos7_64_base/README.md 写devtoolset4 (gcc 5.3.1)而 centos7_64_base/Dockerfile 实际安装的是devtoolset-7-gcc/devtoolset-7-gcc-c。构建镜像deployment/dockerfiles/README.md 给出的通用构建命令为docker build -t account/reponame:tag Dockerfile其中account是镜像仓库账号名reponame是镜像仓库名tag是版本标签Dockerfile是构建上下文目录。该文档的 Update Guide 给出了工具链镜像的具体示例tag 以qt591-llvm500这类“qt版本-llvm版本”形式命名构建时替换成你要发布的 tagcd deployment/dockerfiles/linux/centos7_64 docker build -t coatisoftware/centos7_64_qt_llvm:tag .构建耗时较长因为 Dockerfile 会从download.qt.io、github.com/llvm/llvm-project/releases、sourceforge.net下载 Qt、LLVM、Boost 源码现场编译。构建过程本身包含一层内置检查centos7_64_base/Dockerfile 和 centos7_64/Dockerfile 都有RUN make --version、RUN cmake --version、RUN mvn --version、RUN ninja --version等步骤任一工具缺失会让构建在早期失败。构建完成后本地多出一个打了 tag 的镜像可以用docker image ls确认它存在且大小符合预期。运行镜像README 给出的运行方式为进入交互式 shelldocker run -it image /bin/bash将image换成上一步的完整镜像名如coatisoftware/centos7_64_qt_llvm:tag。容器内当前用户是builderuid 1000工作目录为/home/builderQt5_DIR、Clang_DIR、BOOST_ROOT等环境变量已由镜像设置可直接在其中执行 Sourcetrail 的 CMake 配置与编译仓库自身的 script/buildonly.sh 就是在这类容器环境里用-DDOCKER_BUILDON配置build/Debug与build/Release两个 CMake 目录的脚本。此外仓库还有 script/docker/ 一组本地开发脚本createImage.sh 用nvidia-docker启动容器并挂载~/dev/sourcetrail_docker_64到容器内/home/builder/sourcetrailstartDev.sh 在容器已存在时直接nvidia-docker start -i sourcetrail_dev、否则调用 createImage.sh执行前后各调用一次xhost /xhost -开放和收回 X 访问deleteDev.sh 用docker rm sourcetrail_dev删除容器restartDocker.sh 执行sudo systemctl restart docker重启 Docker 服务。这套脚本引用的是旧镜像名coatisoftware/centos6_64_dev且使用--privileged、-u 0等特权参数与当前 centos7_64 系列镜像名不匹配只可作为参考路径实际使用需自行替换为当前镜像名并评估权限影响。发布镜像README 的发布流程只有两步docker login docker push account/reponame:tag文档给出的完整更新流程Update Guide顺序为# 1. 查看现有镜像 docker image ls # 2. 删除本地旧 tag 的镜像会删除本地镜像仅对已由新 tag 替代的旧 tag 执行 docker rmi coatisoftware/centos7_64_qt_llvm:tag docker rmi coatisoftware/centos7_32_qt_llvm:tag # 3. 清理 Docker 无用数据会移除未被使用的镜像/缓存等资源 docker system prune # 4. 修改 Dockerfile 中的库版本号后用新 tag 构建并发布 cd deployment/dockerfiles/linux/centos7_64 docker build -t coatisoftware/centos7_64_qt_llvm:tag . docker login docker push coatisoftware/centos7_64_qt_llvm:tagdocker rmi与docker system prune均为破坏性/清理类操作执行前先用docker image ls核对要删除的 tag 确实是旧版本。文档最后两步是“更新 .gitlab-ci.yml 中 linux 镜像的 ”和“commit 并发布变更”但当前仓库的 CI 配置文件是 .travis.yml 而非.gitlab-ci.yml说明该 Guide 部分内容未随仓库同步同理Guide 中提到的centos7_32目录在当前deployment/dockerfiles/linux/下也不存在现仅有centos7_64、centos7_64_base、travis_cidocker rmi coatisoftware/centos7_32_qt_llvm:tag一步按现状应跳过。CI 层镜像的构建与产物验证travis_ci镜像是整套流程的落地验证.travis.yml 中install阶段先chmod 777 deployment/dockerfiles/linux/travis_ci/entrypoint.sh再构建镜像docker build -t coatisoftware/local deployment/dockerfiles/linux/travis_ciscript阶段用当前提交哈希运行容器并把产物拷出COMMIT_HASH$(git rev-parse HEAD) docker run --name builder coatisoftware/local ${COMMIT_HASH} docker cp builder:/home/builder/Sourcetrail/release $TRAVIS_BUILD_DIR/releaseentrypoint.sh 接收$1作为要构建的 commit依次执行git cloneSourcetrail 仓库→git checkout $1→./script/buildonly.sh all→./script/build.sh release test→./setup/Linux/createPackages.sh然后把生成的Sourcetrail*.tar.gz和Sourcetrail*.AppImage拷入release/目录。能走到docker cp成功拷出这两个产物即说明镜像内的工具链可用、一次完整构建成功.travis.yml的deploy部分则只在打 tag 时把这些 tar.gz 与 AppImage 发布到 release。限制与核对要点版本信息以 Dockerfile 为准工具链镜像实际构建的是 Qt 5.12.6 LLVM 11.0.0 Boost 1.67.0centos7_64与centos7_64_base的 README 各有一处过期描述见上文分层部分。镜像构建依赖外网下载 Qt/LLVM/Boost 源码构建上下文即各目录本身docker build ... 目录无需额外挂载。Update Guide 中.gitlab-ci.yml与centos7_32相关内容已与当前仓库状态不符实际 CI 使用.travis.yml与deployment/dockerfiles/linux/travis_ci/。script/docker/下的本地开发脚本基于旧镜像名coatisoftware/centos6_64_dev和nvidia-docker与本文主路径构建/发布 centos7_64 系列镜像不是同一套镜像仅在有 NVIDIA 驱动环境和 X 服务的前提下可作参考。【免费下载链接】SourcetrailSourcetrail - free and open-source interactive source explorer项目地址: https://gitcode.com/GitHub_Trending/so/Sourcetrail创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表