Linux-docker镜像分层构建-tomcat

docker构建新的镜像时,都要执行很多命令,消耗时间。

分层构建可以节约构建镜像的时间和步骤

分层构建:

  1、构建基础镜像:安装常用的命令,在centos,debain,rehat,ubuntu等官方镜像的基础上构建(构建完成后,基本不用修改可重复利用)

  2、构建运行环境镜像:部署nginx,tomcat等(构建完成后,基本不用修改可重复利用)

  3、构建业务镜像:部署生产业务(根据业务的需求,更改业务镜像即可),构建镜像时只构建业务镜像,花费的时间少,构建镜像的步骤少。

 

自定义Tomcat业务镜像:

基于官方提供的centos,debain,ubuntu,alpine 等基础镜像构建 JDK(java环境),然后再基于自定义的JDK镜像构建出业务需要的tomcat镜像。

构建JDK镜像:

 

先基于官方提供的基础镜像,制作出安装了常用的命令的自定义基础镜像,然后再基础镜像的基础之上,再制作JDK镜像、tomcat镜像等。

自定义centos基础镜像

下载官方基础镜像

[17:31:31 root@ubuntu-lyj ~]#docker pull martonyang/centos7.8.2003

目录结构按照业务类型或系统类型等方式划分

[17:40:07 root@ubuntu-lyj ~]mkdir -pv dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}}
[17:40:07 root@ubuntu-lyj ~]#tree /data/
/data/
└── dockerfile
    ├── system
    │   ├── centos
    │   ├── redhat
    │   └── ubuntu
    └── web
        ├── apache
        ├── jdk
        ├── nginx
        └── tomcat

进入centos目录下修改基础镜像:

[17:42:21 root@ubuntu-lyj ~]#cd /data/dockerfile/system/centos/
[17:44:17 root@ubuntu-lyj /data/dockerfile/system/centos]#

编辑dockerfile

17:46:34 root@ubuntu-lyj /data/dockerfile/system/centos]#vim Dockerfile 
[17:49:18 root@ubuntu-lyj /data/dockerfile/system/centos]#cat Dockerfile 
#Centos Base image
#
FROM martonyang/centos7.8.2003
MAINTAINER "JING 12345@qq.com"

RUN yum install -y vim wget tree lrzsz gcc gcc-c++ atutomake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
RUN groupadd www -g 2022 && useradd www -u 2022 -g www
#添加系统账户
 

通过脚本构建镜像

分层构建镜像,镜像名称有很多个,为了方便操作,分辨清楚,使用脚本构建镜像,把每层的构建镜像命令写入脚本,直接执行脚本即可。

脚本建立在每层业务的目录下:

/data/dockerfile/system/centos
/data/dockerfile/system/ubuntu
/data/dockerfile/system/redhat
/data/dockerfile/web/nginx
/data/dockerfile/web/tomcat
/data/dockerfile/web/jdk
/data/dockerfile/web/apache
[17:49:32 root@ubuntu-lyj /data/dockerfile/system/centos]#vim build-command.sh
[17:52:35 root@ubuntu-lyj /data/dockerfile/system/centos]#cat build-command.sh 
#!/bin/bash
docker build -t centos-base:7.8.2003 .
[17:59:02 root@ubuntu-lyj /data/dockerfile/system/centos]#bash build-command.sh 

验证centos基础镜像环境

[18:06:09 root@ubuntu-lyj /data/dockerfile/system/centos]#docker run -it centos-base:7.8.2003 bash
[root@b8c373eab84d /]# id www
uid=2022(www) gid=2022(www) groups=2022(www)
[root@b8c373eab84d /]# to
toe    top    touch  
[root@b8c373eab84d /]# to
toe    top    touch  
[root@b8c373eab84d /]# vi
vi        view      vigr      vim       vimdiff   vimtutor  vipw      
[root@b8c373eab84d /]# wget 
.dockerenv         etc/               media/             root/              sys/
anaconda-post.log  home/              mnt/               run/               tmp/
bin/               lib/               opt/               sbin/              usr/
dev/               lib64/             proc/              srv/               var/
[root@b8c373eab84d /]# w    
w             watchgnupg    weak-modules  which         whoami        
wait          wc            wget          while         wipefs        
watch         wdctl         whereis       who           write         

执行构建JDK镜像:

 进入jdk目录,构建JDK

[18:08:32 root@ubuntu-lyj ~]#cd /data/dockerfile/web/jdk/
[18:08:40 root@ubuntu-lyj /data/dockerfile/web/jdk]#mkdir jdk-8u291   #创建jdk版本目录,生产中有不同的版本部署

准备JDK程序包

 

 

 

[18:49:06 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#ls
Dockerfile  jdk-8u291-linux-x64.tar.gz  profile

拷贝容器中的/etc/profile文件

[18:37:57 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker run --rm -it centos-base:7.8.2003 bash
[root@9024393ac928 /]# ll /etc/profile
-rw-r--r-- 1 root root 1819 Apr  1  2020 /etc/profile
[root@9024393ac928 /]# exit
exit
[18:38:20 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker cp 9024393ac928:/etc/profile .
Error: No such container:path: 9024393ac928:/etc/profile

vim profile

文件末尾添加以下内容:环境变量

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[18:52:29  root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#cat profile 
# /etc/profile
..................
..................
..................
unset i
unset -f pathmunge

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

编辑Dockerfile

[19:22:33 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#vim Dockerfile

#JDK base image
FROM centos-base:7.8.2003
MAINTAINER "JING 12345@qq.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src/
RUN ln -sv /usr/local/src/jdk1.8.0_291 /usr/local/jdk
ADD profile /etc/profile

执行构建自定义JDK基础镜像

通过脚本构建

[19:24:14 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#vim build-command.sh

#!/bin/bash
docker build -t jdk-base:8u291 .

执行构建

[19:06:03 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#bash build-command.sh

验证JDK镜像环境

[21:37:21 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker run -it --rm jdk-centos-base:8u291
[root@3032654b3b5b /]# java       #root没有读取profile环境变量
bash: java: command not found
[root@3032654b3b5b /]# env
HOSTNAME=3032654b3b5b
TERM=xterm
name=mage
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/root
_=/usr/bin/env

设置root全局变量,在Dockerfile文件添加以下内容

[21:46:06 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#vim Dockerfile 

#JDK base image
FROM centos-base:7.8.2003
LABEL maintainer="JING 12345@qq.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src

RUN ln -sv /usr/local/src/jdk1.8.0_291 /usr/local/jdk

ADD profile /etc/profile

ENV name mage

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
#root 环境变量配置

验证镜像JDK环境

java命令使用征程

[21:46:46 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker run -it --rm jdk-centos-base:8u291
[root@38859db04dff /]# ja
jar             java            javac           javafxpackager  javap           javaws
jarsigner       java-rmi.cgi    javadoc         javah           javapackager    
[root@38859db04dff /]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

JDK环境的时区和宿主机的时区不同步:

日志的时间也会不同步,查看日志时有时差,不好排查日志信息

[21:54:36 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker run -it --rm jdk-centos-base:8u291
[root@d29b69f3951f /]# date 
Sun Aug  7 13:54:39 UTC 2022
[root@d29b69f3951f /]# exit
exit
[21:56:59 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#date
Sun Aug  7 21:57:02 CST 2022

 

同步时间

[21:59:30 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#cat Dockerfile 
#JDK base image
FROM centos-base:7.8.2003
LABEL maintainer="JING 12345@qq.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src

RUN ln -sv /usr/local/src/jdk1.8.0_291 /usr/local/jdk

ADD profile /etc/profile

ENV name mage

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
#root 环境变量配置
RUN rm -rf /etc/locatime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

时间同步检查

[21:58:57 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#docker run -it --rm jdk-centos-base:8u291
[root@cb5d43356c15 /]# date
Sun Aug  7 21:59:04 CST 2022
[root@cb5d43356c15 /]# 

完整的jdk镜像环境:

Dockerfile

[21:59:30 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#cat Dockerfile 
#JDK base image
FROM centos-base:7.8.2003
LABEL maintainer="JING 12345@qq.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src

RUN ln -sv /usr/local/src/jdk1.8.0_291 /usr/local/jdk

ADD profile /etc/profile

ENV name mage

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
#root 环境变量配置
RUN rm -rf /etc/locatime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

build-command.sh

[22:00:11 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#cat build-command.sh 
#!/bin/bash
docker build -t jdk-centos-base:8u291 .

profile

[22:01:23 root@ubuntu-lyj /data/dockerfile/web/jdk/jdk-8u291]#cat profile 
# /etc/profile
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done
unset i
unset -f pathmunge

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

 

从JDK镜像构建tomcat 8 base 镜像

进入tomcat目录

[22:05:28 root@ubuntu-lyj ~]#cd /data/dockerfile/web/tomcat/
[07:28:00 root@ubuntu-lyj /data/dockerfile/web/tomcat]#mkdir tomcat-base
[07:28:09 root@ubuntu-lyj /data/dockerfile/web/tomcat]#cd tomcat-base/

准备tomcat 安装包

[07:31:00 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#ll
total 2704
drwxr-xr-x 2 root root    4096 Aug  8 07:30 ./
drwxr-xr-x 3 root root    4096 Aug  8 07:28 ../
-rw-r--r-- 1 root root 10595340 Jun  9 05:43 apache-tomcat-8.5.81.tar.gz

编辑Dockerfile

[07:44:07 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#vim Dockerfile 

FROM jdk-centos-base:8u291
LABEL maintainer="JING 12345@qq.com"

ADD apache-tomcat-8.5.81.tar.gz /apps
RUN ln -sv /apps/apache-tomcat-8.5.81 /apps/tomcat

脚本构建tomcat基础镜像

[07:48:59 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#vim build-command.sh 

#!/bin/bash
docker build -t tomcat-base:8.5.81 .

执行构建

[07:43:53 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#bash build-command.sh

验证镜像构建完成

[07:43:56 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#docker run -it --rm tomcat-base:8.5.81
[root@fa4dd8268f33 /]# ll /apps/
total 4
drwxr-xr-x 4 root root 4096 Aug  8 07:41 apache-tomcat-8.5.81
lrwxrwxrwx 1 root root   35 Aug  8 07:43 tomcat -> /apps/apache-tomcat-8.5.81
[root@fa4dd8268f33 /]# exit
exit
[07:49:38 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-base]#docker images
REPOSITORY                  TAG        IMAGE ID       CREATED         SIZE
tomcat-base                 8.5.81     a4305231bb0b   6 minutes ago   1.01GB
jdk-centos-base             8u291      17d323ce7653   10 hours ago    1.01GB
centos-base                 7.8.2003   3a7c6d1c0eef   14 hours ago    651MB
martonyang/centos7.8.2003   latest     0c0f2dcf7afd   12 months ago   268MB

构建业务镜像:

在tomcat目录下,创建tomcat-app1业务目录,部署业务文件

[07:54:55 root@ubuntu-lyj /data/dockerfile/web/tomcat]#mkdir tomcat-app1
[07:55:07 root@ubuntu-lyj /data/dockerfile/web/tomcat]#cd tomcat-app1/
[07:55:11 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#

 

页面部署

创建 myapp文件夹,建立index.jsp (由开发提供的页面文件)

[08:00:37 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#mkdir  myapp
[08:01:02 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#cd myapp/
[08:01:04 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1/myapp]#vim index.jsp

打包文件

[08:03:33 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1/myapp]#cd ..
[08:04:16 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#ls
Dockerfile  myapp
[10:00:57 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#vim myapp/index.jsp

<h1>JING N65 tomcat app1 web page</h1>


[08:04:19 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#tar czvf myapp.tar.gz myapp/
myapp/
myapp/index.jsp
[08:05:19 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#ls
Dockerfile  myapp  myapp.tar.gz

 

拷贝出server.html文件到当前目录下/tomcat-app1

[07:46:09 root@ubuntu-lyj /data/dockerfile/web/jdk]#cd /data/dockerfile/web/tomcat/tomcat-app1/
[08:44:59 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#docker cp 715998a104c4:/apps/tomcat/conf/server.xml .
[08:45:27 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#ls
Dockerfile  myapp  myapp.tar.gz  server.xml

修改页面文件读取路径

[08:46:52 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#vim server.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!--
..................................

      <Host name="localhost"  appBase="/data/tomcat/webapps"
            unpackWARs="false" autoDeploy="false">
...................................
      </Host>
    </Engine>
  </Service>
</Server>

准备Dockerfile文件

[09:53:01 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#vim Dockerfile 

#JING ceshi tomcat app1
FROM tomcat-base:8.5.81
LABEL maintainer="JING 12345@qq.com"

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

RUN chown www.www /data /apps -R

EXPOSE 8080 8443

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

 准备容器启动执行脚本

[09:55:56 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#vim run_tomcat.sh 

#!/bin/bash
su - www -c "/apps/tomcat/bin/catalina.sh start"
su - www -c "tail -f /etc/hosts"

准备脚本构建

[09:57:49 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#vim build-command.sh 

#!/bin/bash
docker build -t tomcat-web:app1 .
[10:00:04 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#ls
build-command.sh  Dockerfile  myapp  myapp.tar.gz  run_tomcat.sh  server.xml

 

执行构建

[09:53:11 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#bash build-command.sh 

运行容器访问测试

[10:00:50 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app1]#docker run -it -d -p 8080:8080  tomcat-web:app1
fe8bc9858770512d56cf8d49b74d265a7b6b1df047bbd4a64b9059e67b41038f

页面访问目录修改为/data/tomcat/webapps/下没有tomcat默认页面,显示404未找到

 

 访问 http://10.0.0.100:8080/myapp/ 是部署好的web页面

 

 tomcat的docker镜像分层构建完成,业务不同,再次修改业务tomcat-app1镜像即可,不需要修改centos镜像,jdk-base镜像,tomcat-base镜像

例如

在创建一个tomcat-app2业务

演示环境,直接递归复制一份tomcat-app1为tomcat-app2修改

[10:23:08 root@ubuntu-lyj /data/dockerfile/web/tomcat]#ls
tomcat-app1  tomcat-base
[10:23:09 root@ubuntu-lyj /data/dockerfile/web/tomcat]#cp -r tomcat-app1 tomcat-app2
[10:23:50 root@ubuntu-lyj /data/dockerfile/web/tomcat]#ls
tomcat-app1  tomcat-app2  tomcat-base
[10:23:52 root@ubuntu-lyj /data/dockerfile/web/tomcat]#cd tomcat-app2/
[10:23:59 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#ls
build-command.sh  Dockerfile  myapp  myapp.tar.gz  run_tomcat.sh  server.xml

修改 build-command.sh文件 ,myapp/index.jsp文件重新打包(此文件生产中由开发提供) 

[10:24:54 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#vim build-command.sh 
[10:26:20 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#cat build-command.sh 
#!/bin/bash
docker build -t tomcat-web:app2 .
[10:26:24 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#vim myapp/index.jsp 
[10:26:44 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#cat myapp/index.jsp 
<h1>JING N65 tomcat app2 web page</h1>
[10:26:50 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#tar czvf myapp.tar.gz myapp/
myapp/
myapp/index.jsp
[10:27:27 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#ls
build-command.sh  Dockerfile  myapp  myapp.tar.gz  run_tomcat.sh  server.xml

构建镜像

[10:27:30 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#bash build-command.sh 

访问测试

运行镜像:运行本次退出则删除

[10:28:52 root@ubuntu-lyj /data/dockerfile/web/tomcat/tomcat-app2]#docker run -it --rm  -p 8081:8080 tomcat-web:app2

 

posted @ 2022-08-08 10:32  goodbay说拜拜  阅读(217)  评论(0编辑  收藏  举报