分层构建Tomcat镜像

分层构建Tomcat镜像

#创建工作目录
docker pull centos
mkdir -pv /opt/dockerfile/{web/nginx,tomcat,jdk,apache},system/{centos,ubantu,alpine,debian}

自定义centos基础镜像

#进入工作目录
cd /opt/dockerfile/system/centos
#编写dockerfile
vim Dockerfile
#Centos 7.7 base image
FROM Centos:7.7.1908

LABEL miaosen 952726682@qq.com

RUN yum install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake proc proc-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop

RUN groupadd www -g 2020 && useradd www -u 2020 -g www
#打包镜像
docker build -t centos—base:7.7.1908 .

编写构建脚本

vim docker_build.sh
#!/bin/bash
docker build -t centos—base:7.7.1908 .

自定义jdk镜像

#进入工作目录
cd /opt/dockerfile/web/jdk
mkdir jdk8-8u212
cd jdk8-8u212
#编写dockerfile
vim Dockerfile
#JDK Base image
FROM centos—base:7.7.1908

ADD jdk-8u212-linux-x64.tar.gz /usr/local/src/
RUN lb -sv /usr/local/src/jdk1.8.0_212 /usr/local/src
ADD profile /etc/profile

#如果未进行ENV环境设置,会导致docker内用户无法使用java
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

编写profile文件

#添加java环境
vim profile
......
export JAVA_HOME=/usr/local/jdk/
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#将profile拷贝到dockerfile同级目录

编写构建脚本

vim docker_build.sh
#!/bin/bash
docker build -t centos-jdk:8u241 .

文件目录

tree
.
├── Dockerfile
├── jdk-8u212-linux-x64.tar.gz
├── docker_build.sh
└── profile

自定义Tomcat镜像

vim Dockerfile
FROM centos-jdk:8u241

ADD apache-tomcat-8.5.51.tar.gz /apps

RUN ln -sv /apps/apache-tomcat-8.5.51.tar.gz /apps/tomcat

编写构建脚本

vim docker_build.sh
#!/bin/bash
docker build -t centos-tomcat:8.5.51 .
#将apache-tomcat-8.5.51.tar.gz拷贝到dockerfile同级目录

测试镜像

docker run --rm -it -p 8080:8080 centos-tomcat:8.5.51 bash

自定义业务镜像

mkdir tomcat-app1
vim Dockerfile
FROM centos-tomcat:8.5.51

ADD server.xml /apps/tomcat/conf/server.xml
ADD catalina.sh /apps/tomcat/bin/catalina.sh
ADD gms.tar.gz /data/tomcat/webapps
ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh

RUN chown www.www -R /apps

EXPOSE 8080 8005 8009

CMD ["/app/tomcat/bin/run_tomcat.sh"]

编写测试文件

mkdir gms
cd gms
echo "hello dockerfile" > index.html
cd ..
tar czvf gms.tar.gz gms/*

修改tomcat配置文件

#建议修改server.xml;关闭自动解压、自动部署、修改路径
......
<Host name="localhost"  appBase="/data/tomcat/webapps"  unpackWARs="false" autoDeploy="false">
......

编写run_tomcat脚本

#!/bin/bash
echo "172.31.7.248 dns.gms.local" >> /etc/hosts
echo "nameserver 233.5.5.5" >> /etc/resolv.conf

su - www -c "/app/tomcat/bin/catalina.sh start"
su - www -c "tail -f /etc/hosts"

#为脚本添加可执行权限
chmod +x run_tomcat.sh

编写构建脚本

vim docker_build.sh
#!/bin/bash
docker build -t tomcat-web:app1 .
#将apache-tomcat-8.5.51.tar.gz拷贝到dockerfile同级目录

检查容器

docker ps
docker exec -it    bash
ss -ntl
原文地址:https://www.cnblogs.com/Gmiaomiao/p/13249572.html