使用Linux alpine和Oracle JRE6構建tomcat6鏡像及應用容器化
阿新 • • 發佈:2019-03-01
目錄 fff font rep linu png javafx eba jre 使用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 <[email protected]>" 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 <[email protected]>" 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 <[email protected]>" 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鏡像及應用容器化