alpine linux hadoop,docker(12):alpinelinux安装tomcat

本文介绍了如何使用Alpine Linux和OpenJRE8构建一个轻量级的Tomcat Docker镜像,包括下载Tomcat,删除不必要的文件,修改配置,以及打包Docker镜像的过程。此外,还提供了测试启动Tomcat容器的方法,强调了启动命令的正确使用以避免容器立即退出的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,tomcat

使用alpine环境自己打包安装一个tomcat环境。

使用的是openjdk的jre,目标就是系统尽量的小。

依赖的东西尽量的少。构建tomcat最少需要一个jre。

使用的openjdk8的jre,才106mb。已经非常的小了。

http://www.voidcn.com/article/p-edybdrhf-bew.html

下载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 tomcat

cd tomcat

rm -rf LICENSE NOTICE RELEASE-NOTES RUNNING.txt webapps/* bin/* conf/tomcat-users*

首先解压缩,然后把tomcat里面的乱七八糟的东西删除下。

什么ROOT,Manager,user啥的,防止别人获得管理权限。

然后修改下service.xml,设置ROOT是 / 访问。

其中删除了JreMemoryLeakPreventionListener,关闭了tomcat的一个小时一次的full gc操作。

正常系统上线,内存一般都设置的很大不用担心这个。

http://www.voidcn.com/article/p-kysmqsta-bqz.html

3,打包tomcat

vi Dockerfile

# AlpineLinux open jre 8 & tomcat

FROM demo/openjre8-base:1.0

# add tomcat

RUN mkdir -p /opt

COPY tomcat /opt/tomcat

# Set environment

ENVTOMCAT_HOME/opt/tomcat

ENVPATH${PATH}:${TOMCAT_HOME}/bin

ENTRYPOINT ["/opt/tomcat/bin/startup.sh"]

注意这里依赖openjre8 的镜像,要提前打好。

构建:

docker build -t demo/tomcat-base:1.0 .

这样打包的tomcat 只有 114.8 MB 。非常的小呢。

4,测试启动

创建文件夹:

mkdir -p /data/tomcat/ROOT/WEB-INF

echo "ok" > /data/tomcat/ROOT/index

vi /data/tomcat/ROOT/WEB-INF/web.xml

写一个web.xml 配置

创建临时文件夹,log文件夹,temp文件夹,并设置权限。

在做tomcat基础包的时候,把ROOT文件夹空出来,以后的应用要使用的时候再加上。

mkdir -p /data/tomcat/logs

mkdir -p /data/tomcat/temp

chcon -Rt svirt_sandbox_file_t /data/tomcat/logs

chcon -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/index

ok

测试下能访问成功。

进入docker容器查看:

docker exec -it tomcat-test bash

bash-4.3# df

19548b887b4e68c7f65dab8b9ec851e7.png

4,总结

本文的原文连接是: http://www.voidcn.com/article/p-fxjqlrlz-bew.html 未经博主允许不得转载。

博主地址是:http://blog.youkuaiyun.com/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替换了。不启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值