分层构建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