使用Maven构建包制作Docker镜像项目背景及说明

  • 项目背景
  • 编译构建服务提供了大量构建步骤、模板等,并通过缓存、私有依赖库、开源镜像站等实现开箱即用编译构建体验。但由于构建场景多样化,初次使用编译构建服务时,仍有可能会因设计不当或理解偏差、使用方式不当,导致上手过程存在一定困难。因此,编译构建针对常见的复杂构建场景提供完整的最佳实践方案,供初次使用编译构建服务或需要尝试复杂构建场景的用户使用。

    本文旨在演示如何使用编译构建服务完成Maven构建,使用构建包制作Docker镜像并推送到SWR仓库,同时对构建过程涉及的开源镜像站、私有依赖库、缓存的使用等作简要说明。

    说明:SWR,即容器镜像服务。SWR镜像仓库用于存储用户上传的Docker镜像,可以在构建、部署或其他场景使用。

  • 项目流程
  • 本文演示项目涉及两个Maven工程、一个基础Docker镜像及一个Dockerfile。

    - WebServer项目:此次构建主项目,期望使用CodeArts Build构建此项目,并使用得到的构建包制作Docker镜像,制作镜像所用Dockerfile存放于此项目根目录。

    - WebUtil项目:WebServer依赖的自研工具包,在WebServer项目pom文件中引入,主要用于演示私有依赖库使用场景。

    - 基础镜像:以此镜像为基础,在基础镜像中添加WebServer构建包制作Docker镜像。

    - Dockerfile:用来制作镜像。

使用Maven构建包制作Docker镜像流程

  • 收起 展开
    前提准备 收起 展开

    ① 如果是初次使用CodeArts,请先新建项目,然后开始以下操作。

    ② 准备WebServer项目代码。

    ③ 准备WebUtil项目代码仓库。

    ④准备私有依赖扩展点。

    ⑤在制作镜像并推送到SWR仓库时,需要指定SWR组织名,请前往容器镜像服务SWR提前创建组织

    查看详情
  • 收起 展开
    发布依赖 收起 展开

    ① 新用户首次使用软件开发云服务时,需要前往私有依赖库首页初始化私有依赖库,详情可参考文档创建私有依赖库。

    ② 发布自研工具包WebUtil。

    ③ 使用POM模式手工上传依赖包CommonUtil。

    ④使用GAV模式上传三方依赖MessageSDK。

    查看详情
  • 收起 展开
    打包制作 收起 展开

    新建构建任务,其中,代码源选择刚创建好的代码仓库“WebServer”,构建模板选择“Maven”。

    ② 配置“Maven构建”步骤,确认构建命令、缓存配置无误。

    ③ 配置非CodeArts提供的公有依赖仓。

    查看详情
  • 收起 展开
    查看结果 收起 展开

    ①进入容器镜像服务SWR,选择对应region。

    ② 单击左侧导航栏“我的镜像”,选择在“制作镜像并推送到SWR仓库”构建步骤中填写的组织名,即可查看上传的镜像。

    查看详情

使用Maven构建包制作Docker镜像常见问题

OBS数据恢复费用常见问题

  • 什么是构建缓存,缓存异常时怎么清理?

    编译构建提供了构建缓存功能,构建时可将依赖缓存于用户私有存储空间,下次构建时直接使用,无需重复下载,可极大提高构建效率。

    - 构建缓存配置

    新建编译构建任务时,默认选择使用缓存加速构建,用户可在“Maven构建”中展开“缓存配置”选择是否使用缓存。

    - 清理缓存

    由于网络抖动、并发构建或其他极端情况,可能出现缓存内容异常导致构建异常,下面介绍异常缓存的清理过程。

    执行缓存清理操作前,请务必仔细阅读以下缓存清理风险以及注意事项:

    1.由于缓存目录为同租户共享,频繁清理缓存会概率性导致同租户用户构建异常(常表现为某文件不存在),故此操作只可在缓存异常时清理一次,正常后需要务必再次编辑任务,删除清理命令。

    2.清理缓存时尽可能使用精确的文件路径,如:清理demo 1.0.0版本,请使用“rm -rf /path/com/huawei/demo/1.0.0”,尽量避免删除目录层级过高,导致下次构建缓慢或因网络问题导致依赖异常。

    3.出于安全考虑,缓存清理命令只可在“Maven构建”步骤执行,在其他步骤执行此命令会导致“目录不存在”或清理无效。


    查看更多详情 →

  • Maven构建默认命令含义是什么?

    构建服务内置的默认构建命令为

    # 功能: 打包
    # 参数说明:
    # -Dmaven.test.skip=true:跳过单元测试
    # -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能
    # -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建
    # -B:以batch模式运行,可避免日志打印时出现异常
    # 使用场景: 打包项目且不需要执行单元测试时使用
    mvn package -Dmaven.test.skip=true -U -e -X -B

    其中,各命令/参数含义为:

    mvn package:使用maven执行打包动作,此命令会在项目target目录下生成软件包,可根据需要自行调整目录。

    -Dmaven.test.skip=true:跳过单元测试,建议保留。

    -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能,建议保留。

    -e -X:打印调试信息,定位疑难构建问题时建议使用此参数构建。

    -B:免日志打印时出现异常

使用Maven构建包制作Docker镜像售后服务

  • *智能客服* *HOT*

    *智能诊断,极速解答 为您极速定位问题、解答问题 立即咨询*

    *智能诊断,极速解答 为您极速定位问题、解答问题 立即咨询*

  • *云声丨建议与反馈* *TOP*

    *您的宝贵建议,使我们提供更完美的产品与服务*

    *您的宝贵建议,使我们提供更完美的产品与服务*

  • *电话联系*

    *热线电话 | 邮件服务*

    *热线电话 | 邮件服务*