和往常一样,我们仍然使用centos镜像进行自己配置和安装,Dockerfile如下:
Dockerfile
其内容就是下载,解压,修改一些配置文件和tomcat-users登陆密码等(下载路径自行修改)
FROM centos
MAINTAINER wwww.linuxea.com
ENV TMDD /data/docker/
ENV TMJDK=jdk-8u102-linux-x64.rpm
ENV TMAPA=apache-tomcat-8.5.4
RUN yum install -y http://mirrors.ds.com/JDK/$TMJDK && mkdir $TMDD -p && cd $TMDD
&& curl -s http://mirrors.ds.com/tar%E5%8C%85/${TMAPA}.tar.gz -o /data/docker/${TMAPA}.tar.gz
&& tar xf ${TMAPA}.tar.gz && rm -rf ${TMAPA}.tar.gz
&& mv /data/docker/${TMAPA} /data/docker/tomcat
# && rm -rf /data/docker/tomcat/webapps/*
&& sed -i '/allow/ s/$/-->/' /data/docker/tomcat/webapps/manager/META-INF/context.xml
&& sed -i '/className/ s/^/<!--/' /data/docker/tomcat/webapps/manager/META-INF/context.xml
&& sed -i '/allow/ s/$/-->/' /data/docker/tomcat/webapps/host-manager/META-INF/context.xml
&& sed -i '/className/ s/^/<!--/' /data/docker/tomcat/webapps/host-manager/META-INF/context.xml
&& rm -rf /data/docker/tomcat/conf/tomcat-users.xml
&& curl -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/docker-tomcat/master/tomcat-users.xml -o /data/docker/tomcat/conf/tomcat-users.xml
&& mkdir /opt/{app,config} && mv /data/docker/tomcat/webapps/* /opt/app && mv /data/docker/tomcat/conf/* /opt/config
&& curl -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/docker-tomcat/master/judgment.sh -o /judgment.sh
&& chmod +x /judgment.sh
ENTRYPOINT ["/judgment.sh"]
启动脚本
脚本内容大致判断如果是jar包这使用jar包方式启动,否则就使用statup.sh启动请注意:我的tomcat是配置安装在/data/docker中,在docker镜像build时,分别将webapp的内容移动到新创建的/opt/app下和conf/下的内容移动到/opt/config下,然而我在启动脚本中会判断,在启动时将文件移动到安装目录,因为我在docker-compose中要挂载目录到容器中,并且将容器内配置文件挂载出来,通过两次mv移动解决
#!/bin/bash
#########################################################################
# File Name: 1.sh
# Author: www.linuxea.com
# Email: usertzc@gmail.com
# Version:
# Created Time: 2016年12月19日 星期一 15时17分30秒
#########################################################################
[ -f /data/docker/tomcat/webapps/host-manager ] || mv /opt/app/* /data/docker/tomcat/webapps/
[ -f /data/docker/tomcat/conf/server.xml ] || mv /opt/config/* /data/docker/tomcat/conf/
if [ `ls /data/docker/tomcat/|grep *.jar` ];then
tail -f /etc/issue
cd /data/docker/ && nohup java -jar *.jar --logging.file=./logback.xml > /dev/null 2>&1 &
else
/data/docker/tomcat/bin/startup.sh start
tail -f /etc/issue
fi
docker-compose.yaml
version: '2'
services:
tomcat:
build:
context: https://raw.githubusercontent.com/LinuxEA-Mark/docker-tomcat/master/Dockerfile
container_name: 8.5.4
restart: always
network_mode: "host"
volumes:
- /data/docker/tomcat/webapps/:/data/docker/tomcat/webapps/
- /data/docker/tomcat/conf:/data/docker/tomcat/conf
快速部署
快速部署可参考我的git上的:
-
intenet install apache-tomcat 8.5.9 jdk use jdk-8u111
curl -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/docker-tomcat/master/intenet_create_docker_tomcat.sh |bash