You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Conan包构建含JFrog托管Ubuntu应用的Docker镜像

基于JFrog Conan包构建Docker镜像的可行方案

前置检查

  • 先确认Conan环境已正确配置JFrog仓库访问权限:执行conan remote list检查是否已添加对应JFrog Conan仓库,未添加则执行conan remote add <自定义仓库别名> <你的JFrog Conan仓库地址>,再执行conan user <JFrog用户名> -r <自定义仓库别名>完成鉴权,确保本地可以正常拉取目标应用包及依赖。

推荐实现方案:多阶段Docker构建

该方案可以避免将Conan工具链、构建中间产物塞入最终镜像,大幅减小镜像体积,同时解决单独执行Conan命令找不到产物的问题。

核心逻辑

  1. 第一阶段(构建/拉取阶段):使用带Conan环境的同版本Ubuntu基础镜像,完成JFrog源配置、应用包及依赖拉取、编译(如需要)
  2. 第二阶段(运行阶段):使用干净的同版本Ubuntu基础镜像,仅拷贝第一阶段生成的应用运行必需的二进制文件、动态库、配置文件,配置运行环境即可

Dockerfile示例

# 第一阶段:拉取/构建应用阶段
FROM ubuntu:22.04 AS builder
# 替换为你应用适配的Ubuntu版本号
RUN apt update && apt install -y python3 python3-pip && pip3 install conan==<你使用的Conan版本号,例如1.60.2或2.0.17>
# 配置JFrog Conan源
RUN conan remote add jfrog_repo <你的JFrog Conan仓库地址>
# 鉴权信息建议通过Docker构建参数/秘钥传递,不要硬编码
RUN conan user <JFrog账号> -r jfrog_repo -p <JFrog访问密钥>
WORKDIR /build
# 两种拉取方式二选一即可
# 方式1:使用本地Conanfile拉取依赖并构建
COPY Conanfile .
RUN conan install . --build=missing -r jfrog_repo
RUN conan build .
# 方式2:直接拉取JFrog上已发布的预编译应用包,无需本地构建
# RUN conan install <应用名>/<版本号>@<所属用户>/<渠道> --build=never -r jfrog_repo

# 第二阶段:生成运行时镜像
FROM ubuntu:22.04 AS runtime
# 安装应用运行必需的系统依赖,根据实际情况调整
RUN apt update && apt install -y --no-install-recommends libssl3 && rm -rf /var/lib/apt/lists/*
# 从构建阶段拷贝运行必需文件,路径和Conan输出路径对应即可
COPY --from=builder /build/bin /app/bin
COPY --from=builder /build/lib /app/lib
COPY --from=builder /build/conf /app/conf
# 配置运行环境变量
ENV PATH="/app/bin:$PATH"
ENV LD_LIBRARY_PATH="/app/lib:$LD_LIBRARY_PATH"
# 配置启动命令
CMD ["<你的应用启动二进制文件名>"]

注意事项

  • 如果你使用的是Conan 2.x版本,需对应调整conan remote、conan install等命令的语法,和Conan 1.x版本存在差异
  • JFrog鉴权信息不要硬编码在Dockerfile中,建议通过docker build --build-arg参数传递,避免敏感信息泄露
  • 若你的应用已经是提前上传到JFrog的预编译包,无需执行conan build命令,直接拉取预编译产物即可,能大幅缩短构建时间
  • 可以先在本地环境单独执行Conan拉取、构建命令,确认产物输出路径和功能正常后,再写入Dockerfile,降低调试成本

内容的提问来源于stack exchange,提问作者schultz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:03