前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK 8 & tomcat 镜像准备

JDK 8 & tomcat 镜像准备

原创
作者头像
谢正伟
修改2020-06-08 11:57:09
2.9K0
修改2020-06-08 11:57:09
举报
文章被收录于专栏:云原生研究

Docker hub 上没有现成的官方 Oracle JDK 8, 所以自己准备一个吧。

准备 dockerfile

首先去 oracle 官网手动下载 oracle jdk8 的目标镜像。

将下面的代码存储为 Dockerfile,并将 jdk-8u251-linux-x64.tar.gz 放入同一个目录。

代码语言:txt
复制
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

编译打包

编译的时候可以直接指定到私服

代码语言:txt
复制
docker build -t 127.0.0.1:1080/base/jdk:8u251 .

测试镜像

运行一下镜像里面的命令并删除

代码语言:txt
复制
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

推送镜像

直接推送到线上私有库

代码语言:txt
复制
docker push 127.0.0.1:1080/base/jdk:8u251

使用

在业务应用中 (springboot 类)可以直接使用,Dockerfile 中直接饮用基础镜像。

代码语言:txt
复制
FROM 127.0.0.1:1080/base/jdk:8u251
# ...

tomcat 镜像

许多企业在虚拟机上运行 tomcat 也是修改过的,并进行了调优,并自己编写了 启动和 停止脚本。下面是一个 tomcat 打包的示例,将 tomcat 直接拷贝到镜像中。

代码语言:txt
复制
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。安装命令如下:

代码语言:txt
复制
# RUN apk update && apk add bash   
# alpine 3.3 版本后使用下面的命令,可以让镜像小一点。
RUN apk add --no-cache bash

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备 dockerfile
  • 编译打包
  • 测试镜像
  • 推送镜像
  • 使用
  • tomcat 镜像
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档