Alpine作为JDK的基础镜像(DockerFile)

在这里插入图片描述

准备环境所需程序包

Alpine作为JDK的基础镜像,需要准备glibc安装包,否则无法安装jdk,具体原因我也不知道,如果知晓的“阅友”可在评论区留言,我也学习一下,感谢!
glibc官网地址:GitHub直通车
一:glibc软件包
百度网盘下载地址:https://pan.baidu.com/s/12bDpNr6Bw5JVKLqb2tpOfQ
提取码:h4uf
如果不想去百度网盘下载,可使用以下命令直接从官网下载,但是有点慢哟。

wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk

二:JDK源码包
百度网盘下载地址:https://pan.baidu.com/s/1JXHwKYHzT5yvQkvS9t2A-A
提取码:whab

构建DockerFile

vim alpine_jdk					// 创建构建文件
# 指定基础镜像
FROM alpine:3.16
# 设置作者信息
LABEL maintainer="TOMCAT Docker Maintainers <chlstudy@163.com>"
# 设置工作目录
WORKDIR /usr/local/
# 上传glibc安装包、配置glibc安装签名密钥、安装本地glibc、删除本地缓存
COPY glibc-2.30-r0.apk /usr/local/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \
    && apk update \
    && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    && apk add glibc-2.30-r0.apk \
    && rm -rf /var/cache/apk/* glibc-2.30-r0.apk
# 上传jdk源码包至/usr/local/目录下
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
# 配置环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_291
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

构建镜像并启动容器

docker build -f alpine_jdk -t alpine_jdk:1.0 .
docker run -it --rm 9d017b6ce5d0 sh

在容器内执行“java -version”查看JAVA版本号
在这里插入图片描述
希望此文档对您有所帮助,祝你工作顺利!!!

Alpine Linux 是一种轻量级的 Linux 发行版,以其小型、安全和高效的特性而知名。要制作一个包含 JDK 21 的 Alpine 镜像,你需要按照以下步骤操作: 1. **基础镜像选择**: 使用 `alpine` 基础镜像作为起点,因为它的体积小且适合构建最小化镜像。你可以使用官方的 `alpine:latest` 或者指定特定版本,如 `alpine:3.14`。 2. **下载 JDK**: 使用 `apk add` 或 `wget` 下载 JDK 21 的二进制文件。你可以从 Oracle 或 Adoptium(以前的 OpenJDK)官方网站下载最新版本的 JDK,然后复制到镜像中。 3. **解压并配置**: 将下载的JDK压缩包解压到镜像中的一个合适的目录,例如 `/opt` 或 `/usr/lib/jvm`。记得设置必要的权限以便后续使用。 4. **环境变量设置**: 添加环境变量 `JAVA_HOME` 指向JDK的安装路径,这样系统可以方便地找到Java。 5. **添加启动脚本**: 创建一个启动脚本(比如 `/usr/bin/java`),使用户可以通过命令行运行 `java` 或 `javac`。 6. **清理不必要的文件**: 删除下载的JDK安装包以减小程序大小。 7. **运行时权限**: 如果你的镜像需要在容器中运行,确保给予必要的执行权限。 8. **制作镜像**: 使用 `docker build` 命令创建一个新的Docker镜像,指定基础镜像和上述操作的结果。 **相关问题--:** 1. 如何确保在镜像JDK的依赖项是最新的? 2. 在制作镜像时,如何处理JDK更新的问题? 3. 如何在Dockerfile中编写命令来添加启动脚本并设置环境变量?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彩虹龙

您的鼓励将是我创作最大的努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值