用带glibc的alpine镜像制作 自定义版本的oracle jdk和tomcat

简介: 我只能说, 以下这个dockerfile总结了很久, 当然,目前算是个半成品, 但对我极具参考价值!!! 注释里才是技术亮点。


我只能说,

以下这个dockerfile总结了很久,

当然,目前算是个半成品,

但对我极具参考价值!!!

注释里才是技术亮点。



# base image

# alpine的openjdk可以直接运行,但oracle jdk却需要glibc。残念。
From harbor.example.com/base/baseos/alpine-glibc:3.7-glibc2.27

# MAINTAINER
MAINTAINER XXX



#相将以下ENV合成一行,减少层数,但无论用不用等号,加斜杠,都没成功。又残念。  
ENV     JAVA_HOME=/usr/local/jdk1.8.0_73 
ENV 	CLASSPATH=$JAVA_HOME/bin 
ENV 	TOMCAT_VERSION=tomcat-8.0.14 
ENV 	CATALINA_HOME=/usr/local/${TOMCAT_VERSION} 
ENV 	PATH=.:${JAVA_HOME}/bin:${CATALINA_HOME}/bin:$PATH


RUN  mkdir -p /xxx/temp/ \
	# 统一tomcat的日志和软件包及配置目录。
        && mkdir -p /xxx/webconfigs/ \
        && mkdir -p /xxx/webapps/ \
        && mkdir -p /xxx/weblogs/ \
        && adduser x1 -D -S\
        && adduser x2 -D -S\
        && adduser x3 -D -S\
        # 加指定gid和uid的用户,主要是内核不支持user namespace,就行将uid和gid和宿主机一致。
        && addgroup -g 1234 -S x4 \
        && adduser  -u 5678 -D -S x4 -G x4 \
        && chown -R x4.x4 /xxx/ /xxx/ \
        && chmod 755 -R /xxx/ /xxx/ \
        # 想在alpine里su,要得这样,alpine基于busybox的。
	&& chmod 4755 /bin/busybox \
	# 这样可以更改root密码。至于万一得已登陆docker,这样行,k8s的dashboard也行的。
	&& echo -e "xxxxxx\nxxxxxx" | passwd root \
	# 清空瘦身jdk大小,可以COPY到docker以后进行,当然也可以在外面瘦身jdk再COPY进docker。
        # && rm -rf /usr/local/jdk1.8.0_73/*src.zip \
        #   /usr/local/jdk1.8.0_73/lib/missioncontrol \
        #   /usr/local/jdk1.8.0_73/lib/visualvm \
        #   /usr/local/jdk1.8.0_73/lib/*javafx* \
        #   /usr/local/jdk1.8.0_73/jre/lib/plugin.jar \
        #   /usr/local/jdk1.8.0_73/jre/lib/ext/jfxrt.jar \
        #   /usr/local/jdk1.8.0_73/jre/bin/javaws \
        #   /usr/local/jdk1.8.0_73/jre/lib/javaws.jar \
        #   /usr/local/jdk1.8.0_73/jre/lib/desktop \
        #   /usr/local/jdk1.8.0_73/jre/plugin \
        #   /usr/local/jdk1.8.0_73/jre/lib/deploy* \
        #   /usr/local/jdk1.8.0_73/jre/lib/*javafx* \
        #   /usr/local/jdk1.8.0_73/jre/lib/*jfx* \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libdecora_sse.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libprism_*.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libfxplugins.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libglass.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libgstreamer-lite.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libjavafx*.so \
        #   /usr/local/jdk1.8.0_73/jre/lib/amd64/libjfx*.so \
         #   /tmp/* /var/cache/apk/* \
         && echo "finished!!!!"



# 尴尬的是,如果内核不够新,这里想以非root访问,那么,USER x4是最后起作用,
# CP过去的总是root的权限,而chown和chmod都会将docker的images增大150m以上。
# 要是docker的软件版本能新点,COPY命令支持chown参数,就棒棒的了。
COPY tomcat-8.0.14 /home/docker/tomcat-8.0.14
COPY jdk1.8.0_73 /home/docker/jdk1.8.0_73


#如何提前在本地,作了这几个文修的,就不用CP了,还能减少几层
# COPY ["./server.xml", "/usr/local/apache-tomcat-8.0.14/conf/server.xml"]
# COPY ["./logging.properties", "/usr/local/apache-tomcat-8.0.14/conf/logging.properties"]
# COPY ["./setenv.sh", "/usr/local/apache-tomcat-8.0.14/bin/setenv.sh"]

WORKDIR ${CATALINA_HOME}

# 要是内核新点,能支持user namespace,就可以将root里的用户映射为宿主机的普通用户了。
# 而不用费尽心机的将docker的用户id,组id与宿主机里的uid,gid进行匹配。
USER x4

EXPOSE 8080

CMD ["catalina.sh", "run"]


目录
相关文章
|
5月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
305 41
|
6月前
|
Oracle Java 关系型数据库
Tomcat和JDK的详细安装、下载和环境配置指南
以上就是JDK和Tomcat的下载、安装和环境配置的详细步骤。希望这个指南能帮助你顺利完成设置。
418 32
|
5月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
411 17
|
5月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
127 18
|
5月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
361 11
|
5月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
143 10
|
6月前
|
Java 关系型数据库 MySQL
JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用
以上就是JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用的基本步骤。这些步骤可能会因为你的具体需求和环境而有所不同,但是基本的思路是一样的。希望这些信息能够帮助你更好地理解和使用这些工具。
201 17
|
12月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
239 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
12月前
|
Java 应用服务中间件 API
JDK和Tomcat的作用是什么?
JDK和Tomcat的作用是什么?
|
12月前
|
Dubbo Java 应用服务中间件
剖析Tomcat线程池与JDK线程池的区别和联系!
剖析Tomcat线程池与JDK线程池的区别和联系!
420 0
剖析Tomcat线程池与JDK线程池的区别和联系!

推荐镜像

更多