docker(12):alpinelinux安装tomcat

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 tomcat
cd tomcat
rm -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 & tomcat
FROM demo/openjre8-base:1.0

# add tomcat

RUN mkdir -p /opt
COPY tomcat /opt/tomcat

# Set environment
ENV TOMCAT_HOME /opt/tomcat
ENV PATH ${PATH}:${TOMCAT_HOME}/bin

ENTRYPOINT ["/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-INF
echo "ok" > /data/tomcat/ROOT/index
vi /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/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

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替换了。不启动。

时间: 2024-08-27 23:35:14

docker(12):alpinelinux安装tomcat的相关文章

Ubuntu 12.04 安装配置 Tomcat 7.0.40Tomcat 服务器

  因为源上的版本问题,所以没有使用源上的自动安装包,老规矩,Tomcat 7.0.40 Core下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.40/bin/apache-tomcat-7.0.40.tar.gz 放入当前登录用户根目录: ~ 1.依旧是解压 tar –xzf apache-tomcat-7.0.40.tar.gz 得到apache-tomcat-7.0.40文件夹 2.改个名字,不然敲着蛋疼: mv apac

Docker自动部署Apache Tomcat

本文讲的是Docker自动部署Apache Tomcat,[编者的话]本文是Docker的入门文章,推荐Java开发者阅读.文章详细介绍了如何用Docker来安装部署Tomcat. 介绍 本文会讲述: 扩展Tomcat的官方Dockerfile 构建新的镜像 从修改过的新镜像启动容器 在容器里部署RESTful的Web服务并测试 Apache Tomcat 使用docker search可以查到最流行的(和官方的)Docker Tomcat容器: $ sudo docker search tom

《第一本Docker书(修订版)》——第2章 安装Docker 2.1安装Docker的先决条件

第2章 安装Docker Docker的安装既快又简单.目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux).除此之外,Docker还支持Debian.CentOS.Fedora.Oracle Linux等衍生系统和相关的发行版.如果使用虚拟环境,甚至也可以在OS X和Microsoft Windows中运行Docker. 目前来讲,Docker团队推荐在Ubuntu.Debian或者RH

docker学习(1) 安装

docker是啥就不多讲了,简言之就是更轻量.更牛叉的新一代虚拟机技术.下面是安装步骤: 一.mac/windows平台的安装 docker是在linux内核基础上发展而来的,无法直接运行在mac/windows上,需要借助docker-machine工具,先在mac/windows上建一个linux的虚拟机,然后才能继续玩下去.默认内置的虚拟机引擎是Oracle的免费软件VirtualBox,可支持vmware fusion之类的商业软件. 1.1 下载docker toolbox 下载地址:

linux下安装tomcat问题

问题描述 linux下安装tomcat问题 先看我的环境变量~~jdk和tomcat的,求看看有没有错! 执行 vi /etc/profile 跳到最后 加入以下内容 JDK config JAVA_HOME=/usr/java/jdk1.7.0_25 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CL

图片-这个怎么解决。安装tomcat的时候。

问题描述 这个怎么解决.安装tomcat的时候. 解决方案 没有安装JDK或者环境变量配置错了.. 解决方案二: 没装java的JDK或者JDK的环境变量配置有问题 解决方案三: 没装java的JDK或者没有配置JDK的环境变量JAVA_HOME等,先看JAVA的JDK安装 解决方案四: 运行java -version 看看jdk安装没没有的话安装jdk如果安装了,就看看配置环境变量. 解决方案五: 没有jdk或者没有配置环境变量 解决方案六: 没装java的JDK或者没有配置JDK的环境变量

远程Linux VSP(Virtual Private Server)安装tomcat

问题描述 远程Linux VSP(Virtual Private Server)安装tomcat 远程在Linux VSP(Virtual Private Server)上面安装tomcat的时候,什么jdk啊,然后tomcat的环境变量我都设置了,启动tomcat也是显示启动,但是打开默认页面,上面中文字:显示无法连接mysql 我以为是我的方法有问题,同样的方法在本地ubuntu上面安装,tomcat一切OK 解决方案 记录一下,端口被占用,改成8888就OK了

如何在一个Docker容器里安装Discourse

大家好,今天我们将会学习如何利用Docker平台安装Discourse.Discourse是一个完全开源的讨论平台,以未来十年的互联网理念设计,拥有一个邮件列表,一个论坛和一个长篇聊天室.不管从技术角度还是社会学角度,如今要体验一个现代的.勃勃生机的.完全开源的互联网讨论平台,Discourse都是一个不错的途径.Discourse是一个简单.简明.简易的讨论方式.它确实是一个令人称赞的平台,对于互联网上各种各样的论坛来说,提供了一个上手可用的很酷的服务. Docker是一个开源的.可以将任何应

Linux下安装tomcat+jdk+mysql记录

先安装JDK   下载jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html   wget http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz?AuthParam=1366529379_f7fe2af81268eee41771542b3191968c mv jdk-7u2