首页 > 数据库技术 > 详细

使用Linux alpine和Oracle JRE6构建tomcat6镜像及应用容器化

时间:2019-03-01 18:59:30      阅读:204      评论:0      收藏:0      [点我收藏+]
使用Linux alpine和Oracle JRE6构建tomcat6镜像及应用容器化

Dockerhub上的Tomcat最小版本是7.x,公司的老应用必须使用Tomcat6.x,另外因Oracle JDK版权问题。在Dockerhub上的JDK镜像都是使用Open JDK。公司要求使用Oracle JDK。
SO,找不到合适的,得自己动手构建一个。要求是:镜像体积不要太大,使用Linux alpine,Oracle JDK6,Tomcat6。


一、构建jre6-alpine镜像
1.步骤说明:

* mkdir /home/zxl_work/dockerfile/jdk6 && cd /home/zxl_work/dockerfile/jdk6 
* 上传jdk压缩包jre-6u35-linux-x64.bin
* touche Dockerfile,并将下面的内容拷贝进Dockerfile
* chmod +x jre-6u35-linux-x64.bin
* docker build -t zxl/jre6-alpine:v1.0 .

2.Dockerfile如下:

FROM crownpeak/alpine-glibc:2.23-r3

LABEL maintainer="zxl <379480644@qq.com>"     provider="xxx Technologies, Ltd."

COPY jre-6u35-linux-x64.bin /usr/local/jre1.6.0_35.bin

ENV JAVA_VERSION="1.6.0_35"     JAVA_HOME="/usr/local/jre1.6.0_35"     JRE_HOME="/usr/local/jre1.6.0_35"     PATH="${PATH}:/usr/local/jre1.6.0_35/bin"     LANG=zh_CN.UTF-8

RUN cd /usr/local/ &&     yes | ./jre1.6.0_35.bin &&     rm -rf /usr/local/jre1.6.0_35.bin     /usr/local/jre1.6.0_35/plugin     /usr/local/jre1.6.0_35/bin/javaws     /usr/local/jre1.6.0_35/bin/keytool     /usr/local/jre1.6.0_35/bin/orbd     /usr/local/jre1.6.0_35/bin/pack200     /usr/local/jre1.6.0_35/bin/policytool     /usr/local/jre1.6.0_35/bin/rmid     /usr/local/jre1.6.0_35/bin/rmiregistry     /usr/local/jre1.6.0_35/bin/servertool     /usr/local/jre1.6.0_35/bin/tnameserv     /usr/local/jre1.6.0_35/bin/unpack200     /usr/local/jre1.6.0_35/lib/javaws.jar     /usr/local/jre1.6.0_35/lib/deploy*     /usr/local/jre1.6.0_35/lib/desktop     /usr/local/jre1.6.0_35/lib/*javafx*     /usr/local/jre1.6.0_35/lib/*jfx*     /usr/local/jre1.6.0_35/lib/amd64/libdecora_sse.so     /usr/local/jre1.6.0_35/lib/amd64/libprism_*.so     /usr/local/jre1.6.0_35/lib/amd64/libfxplugins.so     /usr/local/jre1.6.0_35/lib/amd64/libglass.so     /usr/local/jre1.6.0_35/lib/amd64/libgstreamer-lite.so     /usr/local/jre1.6.0_35/lib/amd64/libjavafx*.so     /usr/local/jre1.6.0_35/lib/amd64/libjfx*.so     /usr/local/jre1.6.0_35/lib/ext/jfxrt.jar     /usr/local/jre1.6.0_35/lib/ext/nashorn.jar     /usr/local/jre1.6.0_35/lib/oblique-fonts     /usr/local/jre1.6.0_35/lib/plugin.jar

二、构建tomcat6镜像
1.构建tomcat6-alpine步骤:

* mkdir /home/zxl_work/dockerfile/tomcat6 && cd /home/zxl_work/dockerfile/tomcat6
* 上传apache-tomcat-6.0.26.tar.gz
* touche Dockerfile,并将下面的内容拷贝进Dockerfile
* docker build -t zxl/tomcat6-alpine:v1.0 .

2.Dockerfile如下:

FROM zxl/jre6-alpine:v1.0

LABEL maintainer="zxl <379480644@qq.com>"     provider="xxx Technologies, Ltd."

ENV CATALINA_HOME="/usr/local/tomcat"     PATH="${PATH}:/usr/local/tomcat/bin" 

WORKDIR $CATALINA_HOME

ADD apache-tomcat-6.0.26.tar.gz /tmp/apache-tomcat-6.0.26

RUN  mv /tmp/apache-tomcat-6.0.26/apache-tomcat-6.0.26/* /usr/local/tomcat &&     rm /usr/local/tomcat/bin/*.bat 

VOLUME ["/usr/local/tomcat/logs"]

EXPOSE 8080

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

三、备注:
1.构建出来的Tomcat6的镜像大小为135MB,跟官方的alpine大一点。
技术分享图片

2.附应用的Dockfile

FROM zxl/tomcat6-alpine:1.0

LABEL maintainer="zxl <379480644@qq.com>"     provider="xxx Technologies, Ltd."

COPY target/web.war /usr/local/tomcat/webapps

3.一些说明

3.1 tomcat容器启动命令说明

--后台运行tomcat容器
docker run -d  --name tomcat zxl/tomcat6-alpine:v1.0

--将主机的8088端口与tomcat容器端口进行映射
docker run -p 8088:8080 --name tomcat zxl/tomcat6-alpine:v1.0

--挂载日志目录到/data/docker/tomcat/logs
docker run  -v /data/docker/tomcat/logs:/usr/local/tomcat/logs  --name tomcat zxl/tomcat6-alpine:v1.0

--将主机的系统时间挂载到tomcat容器
docker run -v /etc/localtime:/etc/localtime:ro  --name tomcat zxl/tomcat6-alpine:v1.0

--设置tomcat容器默认时区为上海时区
docker run -v /etc/localtime:/etc/localtime:ro -e TZ="Asia/Shanghai" --name tomcat zxl/tomcat6-alpine:v1.0

--查看所有tomcat容器命令:
docker ps -a | grep tomcat

--删除所有tomcat容器命令
docker rm -f `docker ps -a | grep tomcat | awk ‘{print $1}‘`

--进入tomcat容器
docker exec -it tomcat容器ID sh

--完整的tomcat启动命令如下:暴露8088端口;挂载日志目录;与主机时间同步;设置上海时区;
docker run -d -p 8088:8080 --name tomcat   -v /data/docker/tomcat/logs1:/usr/local/tomcat/logs   -v /etc/localtime:/etc/localtime:ro   -e TZ="Asia/Shanghai"   zxl/tomcat6-alpine:v1.0 

3.2 日志挂载目录说明:

即使不使用-v 指定挂载tomcat的logs目录。tomcat的logs目录也会挂载在类似这样的目录:
/home/imagestorage/volumes/7198cfc8d509e18f2ca83ef57c2908dfb23b9e75f96cad1ccb2da4b7cf0074e3/_data
因为在tomcat的Dockerfile用了VOLUME为容器设置了一个挂载点。但注意的是不同的docker版本,可能目录不同。

如果使用了-v指定挂载tomcat的logs目录,则日志文件会挂载在-v指定的主机目录,不会再挂在类似以下目录。
/home/imagestorage/volumes/7198cfc8d509e18f2ca83ef57c2908dfb23b9e75f96cad1ccb2da4b7cf0074e3/_data

使用Linux alpine和Oracle JRE6构建tomcat6镜像及应用容器化

原文:https://blog.51cto.com/3126109/2356807

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!