1. 程式人生 > 實用技巧 >dockerfile構建Tomcat映象

dockerfile構建Tomcat映象

dockerfile構建Tomcat映象

一、映象分層概念

二、製作tomcat映象

2.1、建立分層目錄
[root@node2 ~]# mkdir /app/{web/{nginx,tomcat,jdk},system/{centos,alpine,ubantu}} -pv
2.2、製作基礎centos映象
[root@node2 ~]# cd /app/system/centos/
[root@node2 centos]# vim Dockerfile
#Centos 7.6 base images

FROM centos:7.6.1810

LABEL tzh [email protected]

RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel vim

#建立tzh組、tzh使用者,然後把使用者tzh新增到tzh組中
RUN groupadd tzh -g 2020 && useradd tzh -u 666 -g tzh

#構建,實際上生產這樣構建不合適。應該搞個指令碼構建,要不然容易忘記映象是幹嘛的!!
[root@node2 centos]# docker build -t centos-base:7.6 .
2.2.1、編寫指令碼,方便日後構建映象,方便記錄映象名稱
#同級目錄下
[root@node2 centos]# pwd
/app/system/centos

#編寫指令碼,先寫固定了,後期可以把centos-base和7.6做手動傳入的引數
[root@node2 centos]# vim build-command.sh
#!/bin/bash
docker build -t centos-base:7.6 .

#呼叫,加許可權 ./build-command.sh也行
[root@node2 centos]# bash  build-command.sh
2.3、構建jdk映象
[root@node2 ~]# cd /app/web/jdk
[root@node2 jdk]# mkdir jdk-8u221
[root@node2 jdk]# cd jdk-8u221/
#找到要上傳的jdk版本,上傳到伺服器當前目錄下
[root@node2 jdk-8u221]# rz

#準備好以下檔案
[root@node2 jdk-8u221]# ll
total 190532
-rw-r--r-- 1 root root       624 Sep 10 09:14 Dockerfile
-rw-r--r-- 1 root root 195094741 Dec 24  2019 jdk-8u221-linux-x64.tar.gz
-rw-r--r-- 1 root root      2150 Sep 10 09:18 profile

#編寫Dockerfile
[root@node2 jdk-8u221]# vim Dockerfile
#FORM 的是剛剛我們做的基礎centos映象
FROM centos-base:7.6

LABEL tzh [email protected]

#新增到映象中,ADD會幫我們解壓
ADD jdk-8u221-linux-x64.tar.gz /usr/local/src/

RUN ln -sv /usr/local/src/jdk1.8.0_221 /usr/local/java

#新增配置檔案
ADD profile /etc/profile

#新增java的環境變數(不加這個root登入沒有java環境)
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

#統一時間,做軟連結。ln [引數][原始檔或目錄][目標檔案或目錄]
RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.3.1、編寫指令碼,方便日後構建映象,方便記錄映象名稱
#同級目錄下
[root@node2 jdk-8u221]# pwd
/app/web/jdk/jdk-8u221

#編寫指令碼,以後優化
[root@node2 centos]# vim build-command.sh
#!/bin/bash
docker build -t centos-jdk:jdk-8u221 .

#呼叫,加許可權 ./build-command.sh也行
[root@node2 centos]# bash  build-command.sh
Successfully built e5a7d9fba0af
Successfully tagged centos-jdk:jdk-8u221

#認證是否能用
[root@node2 jdk-8u221]# docker run --rm -it centos-jdk:jdk-8u221 bash
[root@400048eeca6b /]# java -version

2.4、構建tomcat映象

#進入tomcat目錄
[root@node2 ~]# cd /app/web/tomcat/
[root@node2 tomcat]# mkdir tomcat9.0
[root@node2 tomcat]# cd tomcat9.0/
#上傳tomcat安裝包上來
[root@node2 tomcat9.0]# rz

#編寫最基本的,如果對tomcat優化過,可以把優化過的包替換
#構建最基礎的tomcat映象,等有需要部署程式碼了,再pull這個基礎映象,做不同的配置
[root@node2 tomcat9.0]# vim Dockerfile              
  
FROM centos-jdk:jdk-8u221

LABEL maintainer="tzh <[email protected]>"

ADD apache-tomcat-9.0.27.tar.gz /app

RUN ln -sv /app/apache-tomcat-9.0.27 /app/tomcat