Docker构建JDK 镜像

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 中使用示例

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 中使用

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hellowordx007

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值