Docker构建JDK 镜像
在 Docker官网中的openJDK 镜像中,默认不是使用的北京时间,会导致启动jar应用程序时时区不对的情况,这里在 openJDK镜像的基础上,设置使用中国北京时间,Dockerfile如下
## vim Dockerfile
## 基础镜像,这里使用openjdk15 版本,你可以指定你想要的openjdk版本
FROM openjdk:15.0.2-slim
RUN rm -rf /etc/localtime && \
rm -rf /etc/timezone && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
构建镜像
[root@www ~]# docker build -t kevin2099/openjdk:15.0.2-slim .
## 将镜像发布到 docker 官方仓库,首先需要注册账号哦。
[root@www ~]# docker push kevin2099/openjdk:15.0.2-slim
这个镜像我已 push 到个人的docker 官方仓库,可直接使用 docker pull kevin2099/openjdk:15.0.2-slim
下载
构建通用的 JDK 镜像
构建通用的jdk 镜像,可以运行任意的java 程序
- 创建
entrypoint.sh
文件
entrypoint.sh 文件是docker内置默认的入口文件
[root@www ~]# vim entrypoint.sh
#!/bin/sh
M_OPTS="-Duser.timezone=Asia/Shanghai"
## java 参数优化
JAVA_OPTS=${JAVA_OPTS}
# 要启动的jar包名
JAR_NAME=${JAR_NAME}
exec java ${JAVA_OPTS} ${M_OPTS} -jar ${JAR_NAME}
- 可执行权限
[root@www ~]# chmod +x entrypoint.sh
- 创建Dockerfile
## vim Dockerfile
## 基础镜像
FROM kevin2099/openjdk:15.0.2-slim
# 指定 workdir
WORKDIR /app
##将 entrypoint.sh 添加到镜像中
ADD entrypoint.sh /entrypoint.sh
## 执行entrypoint.sh
CMD ["/entrypoint.sh"]
- 构建镜像
[root@www ~]# docker build -t kevin2099/openjdk:15.0.2-slim-base .
## 将镜像发布到 docker 官方仓库,首先需要注册账号哦。
[root@www ~]# docker push kevin2099/openjdk:15.0.2-slim-base
使用这个通用的镜像构建 java 镜像
假设有个spring boot jar文件,为 equipment-web.jar,通过以下步骤就可以构建java 容器
[root@www equipment]# ll
total 84796
-rwxr-xr-x 1 root root 86824269 Mar 28 08:29 equipment-web.jar
[root@www equipment]# vim Dockerfile
## docker file 内容
FROM kevin2099/openjdk:15.0.2-slim-base
ADD equipment-web.jar equipment-web.jar
[root@www equipment]# ll
total 84796
-rw-r--r-- 1 root root 94 Mar 28 09:08 Dockerfile
-rwxr-xr-x 1 root root 86824269 Mar 28 08:29 equipment-web.jar
[root@www ~]# docker build -t equipment-web:2.0.0 .
在 docker-compose 中使用示例文章来源:https://www.toymoban.com/news/detail-401173.html
services:
equipment-web:
image: equipment-web:2.0.0
ports:
- "8080:8080"
environment:
JAR_NAME: "equipment-web.jar"
JAVA_OPTS: "--enable-preview -Xms512m -Xmx512m"
在 kubernetes 中使用文章来源地址https://www.toymoban.com/news/detail-401173.html
kind: Service
apiVersion: v1
metadata:
labels:
equipment-web: equipment-web
name: equipment-web
namespace: app
spec:
ports:
- port: 8080
targetPort: 8080
selector:
equipment-web: equipment-web
---
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
equipment-web: equipment-web
name: equipment-web
namespace: app
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
equipment-web: equipment-web
template:
metadata:
labels:
equipment-web: equipment-web
spec:
serviceAccountName: app-admin
containers:
- name: equipment-web
image: equipment-web:2.0.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
env:
- name: JAR_NAME
value: equipment-web.jar
- name: JAVA_OPTS
value: "--enable-preview -Xms512m -Xmx512m"
restartPolicy: Always
到了这里,关于Docker构建JDK 镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!