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

Azure Pipelines构建GraalVM Docker镜像最佳实践咨询

GraalVM + Micronaut 在Azure Pipelines的构建实践与问题

我目前在推进GraalVM在项目中的落地,项目内包含多个基于Micronaut框架开发的应用。前期我已经完成本地验证:参照官方指南,使用Micronaut 3.5.2、JDK 17、Kotlin技术栈,在本地Ubuntu 20.04环境执行mvn package -Dpackaging=docker-native命令构建Docker镜像,再通过docker run --publish 8080:8080 graal-test启动应用,所有功能运行均符合预期。

目前我在探索如何在Azure Pipelines中完成GraalVM Docker镜像构建,目标是避免每次构建都重复安装前置依赖,当前公开渠道相关参考资料非常少。我目前通过拆分两个脚本步骤可以完成正常构建:因为task.prependpath配置仅在下一个构建步骤生效,所以将环境准备拆分为两个独立脚本步骤,配置如下:

- script: |
    curl -Lo graalvm-archive.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java17-linux-amd64-22.1.0.tar.gz
    tar -xzf graalvm-archive.tar.gz
    echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/graalvm-ce-java17-22.1.0/bin'

- script: |
    gu install native-image
    sudo apt-get install build-essential libz-dev zlib1g-dev
    native-image --version

后续Docker镜像构建的Maven任务配置如下:

# Build Docker image
- task: Maven@3
  displayName: 'Build Docker'
  inputs:
    goals: 'package'
    options: '-Pgraalvm -Dpackaging=docker-native -Djib.to.image=$(yourImageNameVar):$(yourImageTagVar) -DskipTests=true -Dmaven.javadoc.skip=true --batch-mode'
    javaHomeOption: 'JDKVersion'

这套配置构建出的镜像在GCR中虚拟大小约为30MiB,部署到GKE后应用启动耗时低于40ms,运行表现符合预期。

我查到的相关参考资料提到,Azure Pipelines的Ubuntu 20.04构建镜像已经预装了Graal CE 21.1.0,但资料附带的说明链接已经失效,没法直接参考使用预装版本优化构建流程。如果有相关的成熟实现方案,欢迎提供建议。

补充说明:目前测试的5个Micronaut应用中,仅1个可以通过GraalVM完成构建,Kotlin与GraalVM之间似乎存在兼容性问题,这部分也希望得到相关排查思路参考。


内容的提问来源于stack exchange,提问作者Roar S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:48:38