Docker部署Tomcat

簡介

  Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下廣泛使用,是開發和調試 JSP 程序的首選。
  Tomcat 最初是由 Sun 的軟件構架師詹姆斯·鄧肯·戴維森開發的。後來在他的幫助下 Tomcat 成爲開源項目,並由 Sun 貢獻給 Apache 軟件基金會。
  當配置正確時,Apache 爲 HTML 頁面服務,而 Tomcat 實際上運行 JSP 頁面和 Servlet。
另外,Tomcat 和 IIS 等 Web 服務器同樣,具備處理 HTML 頁面的功能(但處理靜態 HTML 的能力不如 Apache ),另外它仍是一個 Servlet 和 JSP 容器,獨立的 Servlet 容器是 Tomcat 的默認模式。docker

設計 Tomcat 的 Dockerfile

  首先,嘗試在 Dockerhub 上搜索 Tomcat 相關鏡像:apache

[root@gavin /]# sudo docker search tomcat
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2511                [OK]                
tomee                         Apache TomEE is an all-Apache Java EE certif…   66                  [OK]                
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base53                                      [OK]
bitnami/tomcat                Bitnami Tomcat Docker Image                     29                                      [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      27                                      
...

  能夠看到,搜索出不少 Tomcat 鏡像。如是我的開發或測試,能夠隨意選擇一個鏡像,按照提示啓動應用便可。若準備在生產環境中使用,這些鏡像都不是那麼合適了。緣由有三個方面:ubuntu

  1. 項目須要的Tomcat版本可能不一樣。
  2. 項目須要的Tomcat變量不一致。
  3. 項目須要的JDK可能不一致。

  所以,比較好的方式應該是由架構師經過 Dockerfile 或者其餘方式構建好統一的鏡像,而後分發給項目組全部成員來進行。
  下面以 jdk1.8.0_15一、apache-tomcat-8.0.3三、ubuntu 18.04 爲環境介紹如何定製本身的tomcat鏡像。瀏覽器

準備工做

  建立 tomcat8.0_jdk1.8 文件夾,下載或複製本地 apache-tomcat-8.0.33 和 jdk1.8.0_151 到 tomcat8.0_jdk1.8 文件夾下。tomcat

  建立 Dockerfile 和 run.sh 文件到 tomcat8.0_jdk1.8 文件夾下。bash

  操做完成後,tomcat8.0_jdk1.8 目錄下應以下所示:服務器

[root@gavin tomcat8.0_jdk1.8]# ls
apache-tomcat-8.0.33  Dockerfile  jdk1.8.0_151  run.sh

Dockerfile 文件及其餘腳本文件編寫

  Dockerfile 文件內容以下:架構

# 設置繼承鏡像
FROM sshd:ubuntu

# 提供一些做者信息
MAINTAINER from gavin_g@qq.com

# 更改系統時區
RUN echo "Asia/Shanghai" > /etc/timezone

# 設置環境變量
ENV CATALINA_HOME /apache-tomcat-8.0.33
ENV JAVA_HOME /jdk1.8.0_151
ENV JRE_HOME /jdk1.8.0_151/jre

# 複製 apache-tomcat-8.0.33 和 jdk1.8.0_151 到鏡像中
ADD /tomcat8.0_jdk1.8/apache-tomcat-8.0.33 /apache-tomcat-8.0.33
ADD /tomcat8.0_jdk1.8/jdk1.8.0_151 /jdk1.8.0_151
ADD run.sh /run.sh
RUN chmod +x /*.sh

# 設置端口
EXPOSE 8080

# 設置執行命令
CMD ["/run.sh"]

  run.sh 文件內容以下:併發

#!/bin/bash

exec ${CATALINA_HOME}/bin/catalina.sh run

建立和測試鏡像

  經過下面命令建立 tomcat:8.0:jdk1.8:app

[root@gavin tomcat8.0_jdk1.8]# sudo docker build -t tomcat8.0:jdk1.8 .
Sending build context to Docker daemon  399.8MB
Step 1/12 : FROM sshd:ubuntu
 ---> b5fd094edfac
Step 2/12 : MAINTAINER from gavin_g@qq.com
 ---> Using cache
 ---> 99b9f44c09a8
Step 3/12 : RUN echo "Asia/Shanghai" > /etc/timezone
 ---> Using cache
 ---> 52ce09b10a07
Step 4/12 : ENV CATALINA_HOME /apache-tomcat-8.0.33
 ---> Using cache
 ---> 4d60b29cc0c0
Step 5/12 : ENV JAVA_HOME /jdk1.8.0_151
 ---> Using cache
 ---> 72d0aaff4cdd
Step 6/12 : ENV JRE_HOME /jdk1.8.0_151/jre
 ---> Using cache
 ---> 21cbc3180b88
Step 7/12 : ADD /apache-tomcat-8.0.33 /apache-tomcat-8.0.33
 ---> 175b6557530b
Step 8/12 : ADD /jdk1.8.0_151 /jdk1.8.0_151
 ---> 63e83b6f2485
Step 9/12 : ADD run.sh /run.sh
 ---> b8500320f86d
Step 10/12 : RUN chmod +x /*.sh
 ---> Running in c9e512da7154
Removing intermediate container c9e512da7154
 ---> 5aff4ec4e94b
Step 11/12 : EXPOSE 8080
 ---> Running in 5fa306a6f963
Removing intermediate container 5fa306a6f963
 ---> 1ea225879aa3
Step 12/12 : CMD ["/run.sh"]
 ---> Running in 5b146a2f5146
Removing intermediate container 5b146a2f5146
 ---> a3bfe60dbc1d
Successfully built a3bfe60dbc1d
Successfully tagged tomcat8.0:jdk1.8

  查看目前本地擁有的鏡像:

[root@gavin tomcat8.0_jdk1.8]# sudo docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
tomcat8.0                jdk1.8              a3bfe60dbc1d        59 seconds ago      641MB

  啓動一個 Tomcat 容器進行測試:

[root@gavin tomcat8.0_jdk1.8]# sudo docker run -d -p 8080:8080 tomcat8.0:jdk1.8 
3c369a248684f235e44cbe1472293e9399fc98c84a094c8dbcb46e3bc2f94d80

  查看容器信息:

[root@gavin tomcat8.0_jdk1.8]# sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                     NAMES
3c369a248684        tomcat8.0:jdk1.8    "/run.sh"                12 seconds ago      Up 10 seconds                  0.0.0.0:8080->8080/tcp    reverent_feynman

  在本地使用瀏覽器訪問 Tomcat 頁面 http://192.168.41.15:8080/

 

在實際環境中,能夠經過使用 -v 參數來掛載 Tomcat 的日誌文件、程序所在目錄、以及與 Tomcat 相關的配置。

 

這篇文章是我學習 Docker 的記錄,內容參考自《Docker技術入門與實戰》
相關文章
相關標籤/搜索