首页 > 解决方案 > 如何在容器化 Jenkins 中使用主机系统中的 JDK 11 构建 Spring Boot 2

问题描述

jenkinsci/blueocean:latest用过docker-compose.yml它不支持,但是 JDK 11 安装在 docker 的主机系统上。

现在这个 dockerized Jenkins 基于 JDK 8,但我想使用 11 来使用 Spring Boot 2 构建我的项目。

在 dockerized jenkins 上构建作业时,如何使用安装在主机系统上的 JDK 11?

标签: javaspring-bootdockerjenkinsjava-11

解决方案


linux的java依赖glibc,docker镜像jenkinsci/blueocean:latest使用alpine,alpine使用MUSL作为标准C库。

要在 alpine 图像中使用 java,有一些技巧,但并不容易。您是否有一些替代方案来准备 docker 映像。有关更多信息,请参阅此链接。

要工作,您是否必须使用 jenkins 的另一个不使用 alpine 的图像。请参阅下面的示例

version: '3'

services:
  blueocean:
    image: jenkinsci/blueocean:latest
    ports:
      - 8080:8080
    volumes:
      - ./jdk-11.0.2:/opt/jdk11-glibc # doens't work
      - ./jdk-13-ea-musl:/opt/jdk13-musl # work

  jenkins:
    image: jenkins/jenkins:latest
    ports:
      - 8081:8080
    volumes:
      - ./jdk-11.0.2:/opt/jdk11-glibc # work
      - ./jdk-13-ea-musl:/opt/jdk13-musl # doens't work

  jenkins-alpine:
    image: jenkins/jenkins:alpine
    ports:
      - 8082:8080
    volumes:
      - ./jdk-11.0.2:/opt/jdk11-glibc # doens't work
      - ./jdk-13-ea-musl:/opt/jdk13-musl # work

  # alternatively, you can use the jenkins version with jdk11 and install blueocean
  jenkins-jdk11:
    image: jenkins/jenkins:jdk11
    ports:
      - 8083:8080

您想在更新 jenkins 时保留设置,是否必须外部化 volume /var/jenkins_home


推荐阅读