Docker hub 上没有现成的官方 Oracle JDK 8, 所以自己准备一个吧。
首先去 oracle 官网手动下载 oracle jdk8 的目标镜像。
将下面的代码存储为 Dockerfile,并将 jdk-8u251-linux-x64.tar.gz 放入同一个目录。
FROM alpine:3.12
MAINTAINER Cloudbeer
ADD jdk-8u251-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
# 安装 glibc 并清理
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.31-r0/glibc-2.31-r0.apk &&\
apk add --allow-untrusted glibc-2.31-r0.apk &&\
rm -rf /var/cache/apk/* &&\
rm glibc-2.31-r0.apk
编译的时候可以直接指定到私服
docker build -t 127.0.0.1:1080/base/jdk:8u251 .
运行一下镜像里面的命令并删除
docker run --rm 127.0.0.1:1080/base/jdk:8u251 java -version
docker run --rm 127.0.0.1:1080/base/jdk:8u251 javac -version
直接推送到线上私有库
docker push 127.0.0.1:1080/base/jdk:8u251
在业务应用中 (springboot 类)可以直接使用,Dockerfile 中直接饮用基础镜像。
FROM 127.0.0.1:1080/base/jdk:8u251
# ...
许多企业在虚拟机上运行 tomcat 也是修改过的,并进行了调优,并自己编写了 启动和 停止脚本。下面是一个 tomcat 打包的示例,将 tomcat 直接拷贝到镜像中。
FROM 127.0.0.1:1080/lktest/jdk:8u251
ADD tomcat /opt/tomcat
ENV CATALINA_HOME /opt/tomcat
RUN chmod +x /opt/tomcat/bin/*.sh
ADD esfreport.sh /usr/init/esfreport.sh
ADD run.sh /usr/init/run.sh
ADD killbash.sh /usr/init/killbash.sh
RUN chmod +x /usr/init/*.sh
EXPOSE 8080
ENTRYPOINT ["/usr/init/run.sh"]
需要注意的是:
alpine 版本中的 shell 不是 bash,而是 sh。所以之前使用 bash 编写的脚本或许无法运行。
要么修改成 sh 的脚本,要么安装一个 bash。
为了顺利运行原来的 bash,建议直接安装一个 bash。安装命令如下:
# RUN apk update && apk add bash
# alpine 3.3 版本后使用下面的命令,可以让镜像小一点。
RUN apk add --no-cache bash
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。