java - 如何在容器化 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?
解决方案
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
。
推荐阅读
- sql - 如何比较oracle中的两个阿拉伯字符串?
- r - Json 到数据框(空观察,不同长度)
- angular - 在 Angular 的导出函数(不在组件代码中)中注入管道以供使用
- python - 如何让我的 LSTM 模型在训练后进行预测
- asp.net-core - 如何使用 IocManager 在 ASP.NET Boilerplate 中注册服务?
- angular - 迭代对象的对象
- angular - 获取mat-tree的所有可见节点
- c++ - 在保持滚动启用的同时禁用 C++ 中的 EDITTEXT 框中的文本编辑
- javascript - 如何从我的表单组件重新加载/刷新反应表组件
- c# - 如何将 Sustainsys.Saml2 从版本 0.23.0 升级到版本 2.0.0