1. 程式人生 > 其它 >七、Docker入門系列--使用DockerFlie自定義Tomcat映象

七、Docker入門系列--使用DockerFlie自定義Tomcat映象

七、自定義映象Tomcat9

一、Docker入門系列--Docker 簡介
二、Docker入門系列--Docker安裝
三、Docker入門系列--Docker常用命令
四、Docker入門系列--Docker映象
五、Docker入門系列--Docker容器資料卷
六、Docker入門系列--DockerFlie解析
七、Docker入門系列--使用DockerFlie自定義Tomcat映象
八、Docker入門系列--Docker常用安裝
九、Docker入門系列--本地映象釋出到阿里雲
十、Docker入門系列--Docker-Compose簡介和安裝
十一、Docker入門系列--Docker-Compose模板命令


十二、Docker入門系列--Docker-Compose常用命令
十三、Docker入門系列--Portainer視覺化Docker
十四、Docker入門系列--Docker搭建部署SpringCloud微服務專案Demo


7.1 建立目錄

mkdir /mydocker/tomcat9

在該目錄下新建touch.txt檔案

7.2 將jdk和tomcat安裝的壓縮包拷貝進上述目錄

7.3 在tomcat9目錄下新建Dockerfile檔案

注意一下,Dockerfile檔案裡面涉及到jdk跟tomcat版本的地方一定要確定跟你放在tomcat9資料夾下的一致(別複製貼上了就是build,到時候run執行不出來)

FROM         centos
MAINTAINER    mrzhme<[email protected]>
#把宿主機當前上下文的c.txt拷貝到容器/usr/local/路徑下
COPY c.txt /usr/local/cincontainer.txt
#把java與tomcat新增到容器中
ADD jdk-8u301-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.55.tar.gz /usr/local/
#安裝vim編輯器
RUN yum -y install vim
#設定工作訪問時候的WORKDIR路徑,登入落腳點
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java與tomcat環境變數
ENV JAVA_HOME /usr/local/jdk1.8.0_301
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.55
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.55
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器執行時監聽的埠
EXPOSE  8080
#啟動時執行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.55/bin/startup.sh" ]
# CMD ["/usr/local/apache-tomcat-9.0.55/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.55/bin/logs/catalina.out

7.4 構建映象:docker build -t mrlinxitomcat9 .

注意:這裡為什麼沒有加 -f 和Dockerfile的路徑?Dockerfile的標準檔名就是Dockerfile,噹噹前目錄下用於構建映象的Dockerfile的檔名是標準檔名時,可以省略-f+路徑。這時Docker會直接讀取當前目錄下名為Dockerfile的檔案進行映象的構建。

7.5 建立容器並啟動

docker run -d -p 8888:8080 --name myt9 -v /mydocker/tomcat9/test:/usr/local/apache-tomcat-9.0.55/webapps/test -v /mydocker/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.55/logs --privileged=true mrlinxitomcat9

7.6 測試

記得防火牆開放對應的埠(直接關閉防火牆也可以,但是不推薦):

firewall-cmd --permanent --zone=public --add-port=8888/tcp

訪問成功。

7.7 結合前述的容器卷將測試的web服務test釋出

cd /mydocker/tomcat9/test
mkdir WEB-INF

在test目錄下建立a.jsp檔案,在WEB-INF下建立web.xml檔案

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  id="WebApp_ID" version="2.5">

  <display-name>test</display-name>

</web-app>

a.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
  </head>
  <body>
    -----------welcome------------
    <%="i am in docker tomcat self "%>
    <br>
    <br>
    <% System.out.println("=============docker tomcat self");%>
  </body>
</html>

宿主機建立的檔案已經同步過去了

重啟一下容器:docker restart myt9,訪問我們剛才釋出的test

7.8 總結