首页 / 资讯中心 / 文章详情

Positron Rocky Linux 8 CI 镜像:Docker 配置详解与本地实战指南

Positron Rocky Linux 8 CI 镜像:Docker 配置详解与本地实战指南 ★ FEATURED ARTICLE
开发工具代码编辑器数据科学【免费下载链接】positronPositron, a next-generation data science IDE项目地址https://gitcode.com/gh_mirrors/po/positron点击查看免费下载本文基于 Positron 仓库中 docker/images/rocky_8/README.md 展开系统讲解 Positron 官方 Rocky Linux 8 CI/测试镜像的组成、构建参数与使用方式。读完后你将能够理解该镜像如何一次性备齐 R、Python、Quarto、PostgreSQL 等数据科学测试环境并能用两条docker-compose命令在 AMD64/ARM64 机器上拉起完整的本地 E2E 测试环境。1. 定位与目录结构docker/images/rocky_8/目录存放的是基于 Rocky Linux 8 的 CI/测试环境 Docker 配置。它与ubuntu24_04/、rocky_9/、openSUSE15_6/等目录共同构成 Positron 的 CI 镜像矩阵这些镜像既用于 GitHub Actions 流水线也供本地开发复现 CI 环境使用见 docker/images/README.md。该目录的核心文件如下文件作用Dockerfile.rocky_8主测试镜像通过ARCH构建参数同时支持 amd64 与 arm64Dockerfile.positron-builds.rocky_8面向打包构建的轻量镜像编译工具链gcc-toolset-14、perl:5.32、rpm-build、Dpkg 等docker-compose.amd64.ymlAMD64 架构的一键编排db test 两个服务docker-compose.arm64.ymlARM64 架构的一键编排deps/rocky8_packages_amd64.txt / deps/rocky8_packages_arm64.txt按架构拆分的 DNF 系统包清单共 123 个包2. 主镜像内容Dockerfile.rocky_8README 概括了主镜像包含 Rocky Linux 8 基础、Rvia rig、多套 Python 环境系统 Python、pyenv、conda、Node.js、TinyTeX、Quarto、AWS CLI 和开发工具。对照 Dockerfile.rocky_8 源码实际装配过程远比这一句话丰富R 运行时通过 rig 安装。注意 README 中写的是 R 4.4.0 and 4.4.2而当前 Dockerfile 实际执行rig add 4.5.2与rig add 4.4.2并将 4.5.2 设为默认见 Dockerfile.rocky_8#L196-L198 与 #L303-L304——以 Dockerfile 为准。R 编译工具链将 R 4.5.2 与 4.4.2 的Makeconf统一指向gcc-toolset-13的 GCC并显式开启 C20CXX20STD-stdgnu20原因是 R 的 arrow 依赖需要 C20 支持Dockerfile.rocky_8#L306-L328。Python 环境uv管理的 Python 3.10.12 虚拟环境/root/.venv并预装 test/e2e/test-files/requirements.txt 中的 e2e 测试依赖其中 bokeh 等图形栈做了版本收敛pyenv 编译安装 Python 3.13.0Dockerfile.rocky_8#L404-L412Miniforge3conda安装于/opt/conda并额外创建一个隐藏的 Python 3.12.10 conda 环境/root/scratch/python-env供测试环境探测与切换逻辑使用另有一个隐藏的 R 4.4.1 安装于/root/scratch/R-4.4.1从 Posit CDN 下载 centos-8 构建包。TeX架构差异化处理——AMD64 使用 TinyTeX更小、更快安装到/opt/TinyTeX并通过tlmgr拉取 xetex、latexmk、latexrecommended 等集合ARM64 改用系统 TeX Live因为 TinyTeX 二进制要求 GLIBC 2.29 而 Rocky 8 只有 2.28Dockerfile.rocky_8#L200-L241。Quarto安装官方发布的 RPM 而非解压.deb——源码注释解释了原因ar x只应用data.tar.gz会跳过 postinst导致quarto不在 PATH 上同一层内执行quarto --version防止静默回归Dockerfile.rocky_8#L173-L187。Node.js固定版本NODE_VERSION: 24.18.0由 compose 文件传入全局安装node-gyp、npm-run-all、yarn。AWS CLI v2、Git 系统级配置safe.directory /__w/positron/positron对应 GitHub Actions 工作目录、CA 证书路径/etc/pki/ca-trust/extracted/pem/等。Positron 许可证构建使用构建参数TOKEN来自GITHUB_TOKEN浅克隆 positron-license 仓库并用 cargo 构建 pdol即 CI 镜像内置的 Positron 开发许可证服务器与 docker/images/README.md 中 The positron license server 描述一致。2.1 源码构建的三个关键库Dockerfile 中最硬核的部分是为 R 地理空间与 git 相关包源码编译了三套依赖这是数据科学测试环境稳定性的关键GEOS 3.12.2→/opt/geos让terra等包能使用新版 GEOS APIGDAL 3.9.3→/opt/gdalRocky 8 自带的 GDAL 3.0.4 缺少GDAL_DCAP_MULTIDIM_RASTER等terra需要的常量故从源码升级libgit2 1.8.4→/opt/libgit2让gert等 git 相关 R 包使用新版 libgit2 API。三者都通过GEOS_PREFIX/GDAL_PREFIX/LIBGIT2_PREFIX及对应的PKG_CONFIG_PATH、LD_LIBRARY_PATH前置生效Dockerfile.rocky_8#L63-L129。源码注释还记录了一个历史教训早期LD_LIBRARY_PATH曾用赋值而非前置导致/opt下的库丢失sf/terra/gert在运行时找不到libgdal.so.35、libgit2.so.1.8Dockerfile.rocky_8#L438-L447。2.2 R 包安装策略与 PPM 快照镜像的 R 生态配置集中在文件后半部分#L264-L398~/.Rprofile将 RSPMPosit Package Manager仓库指向centos8通道——RHEL/Rocky 8 没有独立的rockylinux8二进制通道旧 URL 会 404 导致全部回退源码编译构建期安装开发依赖时使用日期化的 PPM 快照compose 文件中PPM_SNAPSHOT: 2026-06-30以避免latest发布窗口竞态元数据解析到的版本文件已轮转导致偶发 404运行期.Rprofile/RSPM仍保持latestPKG_SYSREQSfalse避免 pak 的 sysreqs 步骤在测试中途dnf install同步仓库元数据而拖超时 Packages 面板的 e2e 测试共享站点库R_LIBS_SITE/usr/local/lib/R/site-library先装pak再固定安装sf1.0-20sf 1.1-0 存在 C 编译问题最后pak::local_install_dev_deps()装入 test/e2e/test-files/DESCRIPTION 声明的全部 e2e 开发依赖并开启pkg.include_linkingto以兼容 PPM 二进制/源码混合安装计划。2.3 运行时环境变量与端口镜像末尾设置了若干测试相关的环境变量Dockerfile.rocky_8#L433-L436PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD1、ELECTRON_SKIP_BINARY_DOWNLOAD1跳过 Playwright/Electron 二进制下载NODE_OPTIONS--max-old-space-size4095。最终EXPOSE 8080 5900 9323。结合 compose 文件的端口映射8080:8080、5900:5900、9323:9323与依赖清单中的tigervnc-server、fluxbox见 docker/images/README.md Fluxbox and x11vnc for locally viewing running tests可以推断 5900 为 VNC 端口用于本地可视化观察测试运行画面。3. Compose 编排与使用方法README 给出的两条命令即可拉起环境。在 docker/images/rocky_8/ 目录下AMD64 架构cd rocky_8 docker-compose -f docker-compose.amd64.yml up -dARM64 架构cd rocky_8 docker-compose -f docker-compose.arm64.yml up -d两个 compose 文件结构一致docker-compose.amd64.yml均定义mynetworkbridge 网络与两个服务db 服务从共享的 docker/images/postgres/ 目录构建custom-postgres:latestplatforms限定为linux/amd64或linux/arm64映射5432:5432健康检查为pg_isready -U user -d periodic间隔 5s、重试 20 次、启动宽限 30s数据卷postgres-data挂载到/var/lib/postgresql。test 服务由Dockerfile.rocky_8构建镜像名分别为positron-rocky8-amd64:latest/positron-rocky8-arm64:latestdepends_on等待 db 健康后再启动并注入连接环境- POSTGRES_HOSTdb - POSTGRES_PORT5432 - POSTGRES_USER${E2E_POSTGRES_USER:-testuser} - POSTGRES_PASSWORD${E2E_POSTGRES_PASSWORD:-testpassword} - POSTGRES_DBperiodic - POSTGRES_DVDRENTAL_DBdvdrental两个文件的构建参数差异仅体现在架构维度以 amd64 为例构建参数amd64arm64ARCHamd64arm64CPU_ARCHx86_64aarch64NODE_ARCH/NODE_VERSIONx64/24.18.0arm64/24.18.0PPM_SNAPSHOT2026-06-302026-06-30TINYTEX_ARCH/AWS_ARCH/CONDA_ARCH/RIG_ARCHx86_64aarch64QUARTO_ARCHamd64arm64R_ARCH_SUFFIX空-arm64拼接 Posit R 下载包名TOKEN${GITHUB_TOKEN}${GITHUB_TOKEN}R_ARCH_SUFFIX直接用于 Dockerfile 中下载隐藏 R的 URLR-4.4.1-centos-8${R_ARCH_SUFFIX}.tar.gz这是单份 Dockerfile 支撑双架构的典型参数化设计。4. 环境变量README 明确列出了可设置的环境变量及其默认值与 compose 文件中的${VAR:-default}写法一一对应变量说明默认值E2E_POSTGRES_USER数据库用户名testuserE2E_POSTGRES_PASSWORD数据库密码testpasswordGITHUB_TOKENGitHub token用于构建期访问私有许可证仓库无默认必填于构建POSITRON_DEV_LICENSEPositron 开发许可证无默认其中POSITRON_DEV_LICENSE的使用方式在 docker/images/README.md 中有进一步说明CI 中通过 secret 设置本地则通过 license.txt 文件设置。5. 共享 Postgres 镜像与初始化脚本测试数据依赖的 Postgres 镜像定义在共享目录 docker/images/postgres/Dockerfile.postgres即 README 中../postgres/Dockerfile.postgres的仓库根路径形式它基于postgres:latest做两件事将 init-scripts/ 拷入/docker-entrypoint-initdb.d/由官方 entrypoint 自动执行将 sql/ 下的 dump 拷入/sql/——刻意不放在自动执行目录避免被再次针对POSTGRES_DB执行。初始化脚本 10-init-databases.sh 解释了设计动机官方 entrypoint 只对单个POSTGRES_DB自动执行 SQL为让每份数据集独立成库脚本显式创建两个硬编码库名不从环境变量驱动保证各处布局一致并分别加载 dumpperiodic元素周期表样例数据加载自 periodic_table.sqldvdrentalDVD 租赁样例数据加载自 dvdrental.sql。脚本以psql -v ON_ERROR_STOP1执行任何一步失败即终止保证容器数据初始化要么完整成功要么明确报错。6. 小结与适用前提该镜像矩阵是 Positron E2E 测试在 Rocky Linux 8 上的标准运行环境预装了 e2e 测试内容test/e2e/test-files/所需的全部 R/Python 依赖并内置许可证服务器与 VNC 观测通道构建主镜像需要GITHUB_TOKEN拉取许可证仓库本地复现 CI 时建议同时设置E2E_POSTGRES_USER/E2E_POSTGRES_PASSWORD/POSITRON_DEV_LICENSEARM64 机器如 Apple Silicon可直接使用docker-compose.arm64.yml原生构建仓库中 docker/environments/arm-local/ 也展示了基于已发布镜像ghcr.io/posit-dev/positron-rocky8的本地启动脚本可参考其start/stop与 license 注入方式镜像面向 CI 与 e2e 测试场景设计含 VNC、Xvfb 等组件若仅作开发用途可结合rocky_9/、ubuntu24_04/等兄弟目录按需选择。赞分享开发工具代码编辑器数据科学【免费下载链接】positronPositron, a next-generation data science IDE项目地址https://gitcode.com/gh_mirrors/po/positron点击查看免费下载相关推荐Docker Registry 作为 pull-through 缓存镜像站本地镜像加速与配置实战指南Docker Registry 作为 pull through 缓存镜像站本地镜像加速与配置实战指南 导读 本文基于 distributionDocker镜像仓库后端存储云原生Zipkin Docker 镜像完全指南生产镜像、docker-compose 部署与配置实战Zipkin Docker 镜像完全指南生产镜像、docker compose 部署与配置实战 导读 本文以 Zipkin 仓库 docker/README.可观测性后端微服务Positron 的 Debian 13 CI 测试镜像ARM64 与 AMD64 双架构 Docker 环境全解Positron 的 Debian 13 CI 测试镜像ARM64 与 AMD64 双架构 Docker 环境全解 本文围绕 Positron 仓库中 doc开发工具代码编辑器数据科学创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站