在将java应用部署到docker环境的过程中,一个支持运行java程序的镜像是必不可少的。由于oracle授权方面的问题,docker hub 上一般只有基于openjdk的镜像,而且open jdk的镜像不支持字体管理,在使用一些验证码功能时会报错,比如生成验证码功能等。
而且openjdk 的镜像过于庞大,openjdk:17-slim的镜像大小就有407M。基于这些原因,我们可以选择定制一个java运行环境镜像。
jre制作
由于jdk的体积比较大,我们选择jre来作为运行环境,jdk1.8及以前的版本,都是有jre的,但是jdk9以后的版本不在提供jre需要自己制作。
jlink是通过按模块打包的,但是由于目前很多库脊液还不是按模块打包的,所以我们无法知道项目里面都用了那些模块。只好将所有的模块进行打包。这样避免以后出现缺失模块导致应用报错的问题。
下面是windows平激昌台的打包命令
bin\jlink.exe --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre
1
1
linux下,需要将要打包的java配置到系统环境变量中,不然生成不了,会报jlink not find错误
bin/jlink --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre17
1
1
–strip-debug 不打包调式信息 --compress=2 开启2级别压缩,这两项减小生成的文件体明野扒积
–add-modules ALL-MODULE-PATH表示所有模块
镜像制作
基于alpine镜像
拉取alpine镜像
docker pull alpine
1
1
alpine镜像非常小,只有5.59MB,可以通过docker run -it {iamgeId} sh 运行容器,运行一些简单的命令试试
D:\repo\docker\java>docker run -it c059bfaa849c sh
/ # ls
bindevetchome libmedia mntoptproc root runsbin srvsystmpusrvar
1
2
3
1
2
3
编写dockerfile
FROM alpine:latest
MAINTAINER lin
#更换aline源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community" >/etc/apk/repositories
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main" >>/etc/apk/repositories
#update apk
RUN apk update &&apk upgrade
RUN apk --no-cache add ca-certificates
# bash vim wget curl net-tools
RUN apk add bash bash-doc bash-completion
RUN apk add vim wget curl net-tools
RUN rm -rf /var/cache/apk/*
RUN /bin/bash
#setup glibc
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-bin-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-i18n-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-dev-2.32-r0.apk
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN apk add glibc-2.32-r0.apk
RUN apk add glibc-bin-2.32-r0.apk
RUN apk add glibc-dev-2.32-r0.apk
RUN apk add glibc-i18n-2.32-r0.apk
RUN rm -rf *.apk
#setup date
RUN apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#setup language 解决中文乱码
RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
ENV LANG=en_US.UTF-8
#copy jdk-8u251-linux-x64.tar.gz
ADD jdk-8u251-linux-x64.tar.gz /usr/local
#setup java env
ENV JAVA_HOME=/usr/local/jdk1.8.0_251
ENV PATH=$PATH:.:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
构建镜像
docker build -t jdk17-orcle-alpine .
1
1
总结:由于alpine缺少很多东西,比如glibc,需要安装后才能运行jvm,所以暂时放弃这条路
自己安装glibc比较麻烦,可以使用已经安装好glibc的镜像
#FROM alpine:latest
FROM frolvlad/alpine-glibc
MAINTAINER lin
COPY ./jre17 /usr/local/jre17
#setup java env
ENV JAVA_HOME=/usr/local/jre17
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
该方法构建的镜像体积是比较小,但是启动java应用(基于spring boot)的时候jvm会崩溃,原因不明
基于ubuntu
ubuntu镜像相对来说也不是很大,才70多M
FROM ubuntu:latest
MAINTAINER lin
#更新软件源
RUN apt-get update
#安装字体支持
RUN apt-get install fontconfig -y
#清理缓存
RUN apt-get clean
#在windows环境下构建,将/usr/share/zoneinfo/Asia/Shanghai拷贝到本地目录
COPY ./Shanghai /etc/localtime
#setup language 解决中文乱码
#设置中文支持
ENV LANG C.UTF-8
#解压jdk并删除lib目录下的源码
COPY ./jre17 /usr/local/jre17
#授执行权限
RUN chmod -R 750 /usr/local/jre17/bin
#setup java env
ENV JAVA_HOME=/usr/local/jre17
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
构建
docker build -t mydockerhub:5000/jdk17-orcle-ubuntu:jre-17 .
1
1
总结:除了需要处理语言问题外,其他都比较顺利,而且结果镜像211MB,比官方提供的小了很多,暂时就这样吧,以后有时间再折腾
打开CSDN,阅读体验更佳
最新发布 Docker部署SpringBoot项目(超详细)
Docker部署SpringBoot项目(超详细)
继续访问
JDK17抽取JRE并制作docker镜像
jre docker
继续访问
docker 搭建 Oracle JDK(版本可更换) 镜像
首先在本机创建jdk目录 mkdir -p /root/jdk 下载jdk到/root/jdk目录下 (版本随意)也可以直接使用 rpm 下载,各凭本事(!>.<!) 这里我下载的版本是jdk-8u211-linux-x64.tar.gz 在/root/jdk目录下创建Dockerfile文件 vim Dockerfile 内容为 # 基础镜像为 ce...
继续访问
Linux 安装 jdk8-17、运行 jar
前提是先把网络ip配置好https://www.eclipse.org/downloads/packages/官网下载地址: jdk各个版本下载 jdk各个版本档案A:网上随便兽兽道首;file–connect—hostName(linux的ip)—user name(系统用户)—prot(端口:默认)–authentication(选择password)—点击connect后----输入密码选中点击鼠标右键—Upload----->删除 3.Ubuntu卸载jdk 4、在Linux解压文件 三、
继续访问
免密登录容器dockerfile ,docker部署openjdk-17 免密登录容器dockerfile
免密登录容器dockerfile
继续访问
笔记:Docker创建最小JDK运行环境
JDK1.8 Docker最小镜像
继续访问
jre-7u17-windows-x64.exe
JDK是一个开发环境,用于构建应用程序,applet程序,和使用Java编程语言的组成部分。 Java Development Kit(JDK)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 定于2月19日发布的Java SE原来的重要补丁更新 - 2013年2月,但甲骨文决定加快释放该重要补丁更新,因为积极开发“野生”的Java漏洞影响在桌面浏览器,运行时环境(JRE)与该重要补丁更新解决。 更新日志:JDK 7u17 发布,该版本修复了浏览器插件的严重的安全漏洞:CVE-2013-1493,Oracle 强烈建议使用 Java 浏览器插件用户升级。 重要补丁更新是针对多个安全漏洞的补丁集合。为Java SE重要补丁更新还包括非安全修复程序。重要补丁更新是累积性的,每个公告只描述自上一个重要补丁更新和安全警报添加的安全修复。因此,以前的重要补丁更新和安全警报建议应检讨有关以前累积的安全修复程序。 请参考: 重要补丁更新和安全警报的信息,有关Oracle安全性公告。 由于一个成功的攻击所带来的威胁,Oracle强烈建议用户尽快应用CPU修复程序。该重要补丁更新包含50个新安全修复程序的Java SE的产品。 支持受影响的产品 该重要补丁更新解决的安全漏洞影响以下按类别列出的产品。请点击可用补丁列或可用补丁表中的链接来访问这些补丁的文档。
Java17 安装教程与环境配置(完整版)
Java17 安装教程与环境配置(完整版)掉坑经历安装步骤环境配置 掉坑经历 今天做项目的时候,发现新项目用的的spring-boot-starter-parent是最新的,一开始我使用2.5.7一直爆红,当时想着降低版本就能使用了,然后被告知,jdk需要最新版本的,才能运行项目。于是乎,开始找教程,但是我看了好几篇教程,都没正确找到最新jdk下载,这里拿个https://www.oracle.com/java/technologies/downloads/#java17别人博文给的链接,结果你发现,你打开
继续访问
jre17 面向对象+集合的练习
简单的初学者综合练习
继续访问
使用docker容器运行java程序
使用docker容器运行java程序 java 18 一、文件准备 mkdir 11 cd 11 创建并进入目录 docker pull ubuntu:22.04 wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz #sudo vim dockerfile内容如下 From ubuntu:22.04 Maintainer webrx "webrx@126.com" #把java添加到容器中 Add jdk-1
继续访问
docker安装JDK
docker安装jdk有很多种方式,这里使用自己构建镜像的方式。 1.下载jdk安装包 安装包下载可以自己去官网下载,如果闲速度慢可以找一些网络资源; 安装包下载好后,上传到/usr/local/docker/jdk下,这个文件目录需要自己创建 2.创建Dockerfile 在/usr/local/docker/jdk文件夹下创建Dockerfile,Dockerfile内容如下: FROM centos:centos7 MAINTAINER tao # 新建目录 RUN mkdir /usr
继续访问
jre.17_32位
jre.17_32位,适用于JAVA空间,安装在windows *** 作系统中!
jdk8、jdk11、jdk17版本下载
jdk8、jdk11、jdk17版本是长时间支持的版本
Java17(291)之后 , 禁用了TLS1.1 , 使JDBC无法用SSL连接SqlServer怎么办,以下是解决办法
修改java.security文件 1.找到jre的java.security文件 2.打开java.security并搜索 “jdk.tls.disabledAlgorithms=” 3.删掉TLSv1, TLSv1.1, 4.保存,可以了 修改后的样例,jre17可直接复制 修改java.security文件 1.找到jre的java.security文件 如果是jre , 在 {JAVA_HOME} / jre / lib / security中, 比如
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)