docker(12):alpinelinux安装tomcat
来源:互联网 发布:软件测试pdf 编辑:程序博客网 时间:2024/05/22 09:42
1,tomcat
使用alpine环境自己打包安装一个tomcat环境。
使用的是openjdk的jre,目标就是系统尽量的小。
依赖的东西尽量的少。构建tomcat最少需要一个jre。
使用的openjdk8的jre,才106mb。已经非常的小了。
http://blog.csdn.net/freewebsys/article/details/53744348
下载tomcat:
http://tomcat.apache.org/download-80.cgi
tomcat最新的版本是8.5.9 ,tomcat9 还在测试中,生产环境使用tomcat8就行了,性能足够了。
2,整理下tomcat
tar -zxvf apache-tomcat-8.5.9.tar.gz mv apache-tomcat-8.5.9 tomcatcd tomcatrm -rf LICENSE NOTICE RELEASE-NOTES RUNNING.txt webapps/* bin/* conf/tomcat-users*
首先解压缩,然后把tomcat里面的乱七八糟的东西删除下。
什么ROOT,Manager,user啥的,防止别人获得管理权限。
然后修改下service.xml,设置ROOT是 / 访问。
<?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/> <GlobalNamingResources/> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="ROOT" path="/"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access_log" suffix=".txt" pattern="%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i"/> </Host> </Engine> </Service></Server>
其中删除了JreMemoryLeakPreventionListener,关闭了tomcat的一个小时一次的full gc操作。
正常系统上线,内存一般都设置的很大不用担心这个。
http://gao-xianglong.iteye.com/blog/2171441
3,打包tomcat
vi Dockerfile
# AlpineLinux open jre 8 & tomcatFROM demo/openjre8-base:1.0# add tomcatRUN mkdir -p /optCOPY tomcat /opt/tomcat# Set environmentENV TOMCAT_HOME /opt/tomcatENV PATH ${PATH}:${TOMCAT_HOME}/binENTRYPOINT ["/opt/tomcat/bin/catalina.sh", "run"]
注意这里依赖openjre8 的镜像,要提前打好。
构建:
docker build -t demo/tomcat-base:1.0 .
这样打包的tomcat 只有 114.8 MB 。非常的小呢。
4,测试启动
创建文件夹:
mkdir -p /data/tomcat/ROOT/WEB-INFecho "ok" > /data/tomcat/ROOT/indexvi /data/tomcat/ROOT/WEB-INF/web.xml
写一个web.xml 配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"></web-app>
创建临时文件夹,log文件夹,temp文件夹,并设置权限。
在做tomcat基础包的时候,把ROOT文件夹空出来,以后的应用要使用的时候再加上。
mkdir -p /data/tomcat/logsmkdir -p /data/tomcat/tempchcon -Rt svirt_sandbox_file_t /data/tomcat/logschcon -Rt svirt_sandbox_file_t /data/tomcat/temp
启动tomcat:
docker run -d -p 8080:8080 -v /data/tomcat/ROOT:/opt/tomcat/webapps/ROOT \ -v /data/tomcat/logs:/opt/tomcat/logs -v /data/tomcat/temp:/opt/tomcat/temp \ --name tomcat-test demo/tomcat-base:1.0
启动tomcat并绑定端口8080,映射目录/data/tomcat/ROOT 作为主目录,同时映射logs和temp文件夹。
这样直接可以看tomcat的日志了。
#curl localhost:8080/indexok
测试下能访问成功。
进入docker容器查看:
docker exec -it tomcat-test bash
bash-4.3# df
4,总结
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53761840 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
特别注意一点。有的是docker启动的时候并没有带动tomcat启动,而是直接退出了。
这个并不是docker的问题。是因为使用的命令不对。要使用 catalina.sh run 这个参数,这个命令一直执行。
如果使用startup.sh的时候就上后台了。docker以为有问题了。shell执行完了,就直接退出了。然后就不能-d执行了。
也就是说,使用entrypoint 和cmd 命令必须是一个死循环一直执行的命令。
entrypoin和cmd的区别就是cmd可以被替换。
要是使用 docker run -it demo/tomcat-base bash这个命令执行两个不同包。
entrypoint的包tomcat会启动,而cmd打的包,tomcat被shell替换了。不启动。
- docker(12):alpinelinux安装tomcat
- docker(10):virtualbox 安装使用 alpinelinux
- docker(11):alpinelinux安装openjre
- docker(13):alpinelinux安装jenkins
- docker(5):使用alpinelinux 构建python http 项目
- docker(8):使用alpinelinux 构建 golang http 看看能有多小
- Docker实战(五):Docker安装Tomcat
- Docker实战(五):Docker安装Tomcat
- docker(9):使用alpinelinux 构建 golang http 启动了,才15mb
- Docker上手-安装tomcat
- Docker安装Tomcat
- Docker 安装tomcat
- docker--安装tomcat
- Docker 安装 Tomcat
- docker系列三: docker安装tomcat
- DOCKER windows 安装Tomcat内容
- Docker安装配置tomcat,jdk
- Docker笔记(2)--自定义Tomcat Docker
- Java中@Deprecated作用、使用以及引用
- 读取binlog的delete记录
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- C#对字符串进行排序 支持中文 笔画和拼音
- 【BZOJ 2243】[SDOI2011]染色
- docker(12):alpinelinux安装tomcat
- Autonomy IDOL
- TF-IDF算法学习
- Propreties使用时路径问题
- codeforces 388 div2 749B - Parallelogram is Back
- oracle alter table,comment
- 异步接收子线程的返回值
- Android开发之应用向导页
- AR视频制作