如果在docker中部署tomcat,并且部署java應用程序

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

如果在docker中部署tomcat,并且部署java應用程序 博客分類: docker

1、先說如何在docker中部署tomcat

? ? 第一步:root用戶登錄在系統根目錄下創建文件夾tomcat7,命令如:mkdir tomcat7,并且切換到該目錄下:cd tomcat7;

? ? 第二步:創建Dockerfile,命令如:touch Dockerfile;

? ? 第三步:編寫Dockerfile,命令如:vim Dockerfile,完成以下命令編寫:

? ? ? ? ? ? ? ? ? ??FROM ubuntu:14.04
? ? ? ? ? ? ? ? ? ? MAINTAINER zhaichong <344616313@qq.com>
? ? ? ? ? ? ? ? ? ? ENV REFRESHED_AT 2015-7-28

? ? ? ? ? ? ? ? ? ? RUN apt-get -yqq update
? ? ? ? ? ? ? ? ? ? RUN apt-get -yqq install tomcat7 default-jdk

? ? ? ? ? ? ? ? ? ? ENV CATALINA_HOME /usr/share/tomcat7
? ? ? ? ? ? ? ? ? ? ENV CATALINA_BASE /var/lib/tomcat7
? ? ? ? ? ? ? ? ? ? ENV CATALINA_PID ?/var/run/tomcat7.pid
? ? ? ? ? ? ? ? ? ? ENV CATALINA_SH ? /usr/share/tomcat7/bin/catalina.sh
? ? ? ? ? ? ? ? ? ? ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp

? ? ? ? ? ? ? ? ? ? RUN mkdir -p $CATALINA_TMPDIR

? ? ? ? ? ? ? ? ? ? VOLUME ["/var/lib/tomcat7/webapps/"]

? ? ? ? ? ? ? ? ? ? EXPOSE 8080 9000

? ? ? ? ? ? ? ? ? ? ENTRYPOINT ["/usr/share/tomcat7/bin/catalina.sh", "run" ]

? ? ? ? ? ? ? ? ? ? 說明:這里的EXPOSE要把程序中需要使用到的端口都要暴露出去。根據環境變量CATALINA_BASE可以知道VOLUME指定的目錄就是tomcat部署war包的目錄。

? ? ? 第四步:生成鏡像,命令如:docker build -t test:test_app -f /soft/docker/Dockerfile /root

注意,在這個過程中docker需要下載安裝的jdk和tomcat程序所以比較忙,可以通過命令:docker image查看下,返回的數據中第一行有個REPOSITORY和TAG都是<none>的數據行,其中的VIRTUAL_SIZE是階段性變大的,說明是在下載。

? ? ? 第五步:運行鏡像生成容器,命令如:docker run ?--name test_app -d -p 8080:8080 -p 9000:9000 鏡像id,如果不知道鏡像id是多少就使用命令:docker images查看下,注意這里把EXPOSE出來的端口和宿主主機的端口綁定起來了,以后就可以使用宿主主機的IP地址和這個端口來訪問docker容器中的tomcat以及其中的應用程序了。

? ? ? 第六步:測試:在瀏覽器地址欄敲:http://宿主主機ip:8080/,好了成功了。

? ? ? 可以使用命令:docker port 容器id 8080,這個命令查看容器的8080端口和宿主主機端口之間的映射關系,而已看出來現在容器的8080端口映射的是宿主主機的8080端口。

?

2、再說如何部署我們的應用程序到docker容器的tomcat里?

? ? ? 大家知道tomcat在容器中,如果要像在宿主主機上那樣部署tomcat應用程序肯定是不行的。那么采用什么辦法呢?

? ? ? 第一步:上一個問題中我們已經知道war包是部署在容器的位置

docker inspect --format='{{ .Config.Volumes}}'? id

?

是:/var/lib/tomcat7/webapps/,那么這個位置到底在什么地方?使用命令:docker inspect -f "{{.Volumes}}" 容器id,如果不知道容器id,則可以通過:docker ps的方式查看到所有運行的容器,也可以通過docker ps -a的方式查看所有容器,包括運行的和不運行的。

? ? ? 會得出以下的結果:

? ? ??map[/var/lib/tomcat7/webapps:/var/lib/docker/vfs/dir/28d6dd0455d92f0160288a56f838d8aeeff402a843bd57d3b21fcd80eac7df02],在這個map的中括號里,冒號前邊的是容器中的目錄,冒號后邊的對應的宿主主機中的目錄,所以我們只需要把我們的war包拷貝到這個地方然后重啟tomcat即可。

? ? ? 這里要注意,由于我們上邊寫的Dockerfile中默認容器啟動時是會啟動tomcat的,所以這里只需要重啟容器就能讓tomcat把我們的容器加載上,命令如:

? ? ? docker restart 容器id

3、如果要看成tomcat的日志呢?比如查看啟動時的日志,則可以使用命令:

? ? ? ?docker logs 容器id,如果要持續觀察日志,則是:docker logs -f 容器id,這個時候日志是從頭開時讀的,如果日志很長會刷屏很久,如果只打算看最新的日志可以采用以下的方式:docker logs --tail 0 -f ?容器id

? ? ? 注意,有的時候我們想在執行docker run命令的時候才指定映射的Volumes,則可以使用如下命令:

docker run --name gboat2_ca -d -p 8080:8080 -p 9000:9000 --link db001:db_ca -v /home/webapp/ca:/var/lib/tomcat7/webapps/ 64de1445c34c,這里一定要注意的是最后的英文冒號前邊是宿主主機的文件夾路徑,冒號后邊是容器中的路徑。

?

?

http://blog.csdn.net/achilles12345/article/details/47159043

?

http://blog.csdn.net/rznice/article/details/52211620

?

?

?

復制代碼

4、啟動容器(掛載),將software文件夾下的項目同步到tomcat鏡像中并進入到該鏡像中(其中鏡像ID是上一步中查找到的tomcat鏡像ID)

?

復制代碼
docker run -i -t -v /root/software/:/mnt/software/ 鏡像ID /bin/bash docker run --name app -d -p 8080:8080 -p 9000:9000 -v /root/web/:/var/lib/tomcat7/webapps/ cf31e0583f61

?

轉載于:https://my.oschina.net/xiaominmin/blog/1598875

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453192.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

原語

一般地&#xff0c;把系統態下執行的某些具有特定功能的程序段成為原語。原語有兩種&#xff1a;1是機器指令級的&#xff0c;其特點是執行期間不允許中斷&#xff0c;正如在物理學中的原子一樣&#xff0c;在操作系統中是一個不可分割的基本單位。2是功能型的&#xff0c;其特…

Spring Boot結合thymeleaf

之前在Eclipse里寫了個Spring Boot響應jsp的小demo&#xff0c;后來發現打成jar包導出之后找不到jsp文件了。經過在網上查閱信息與資料&#xff0c;發現Spring Boot對于jsp的支持其實是不好的&#xff0c;而且在一些書中和官方都明確表示沒有辦法支持在jar包中打入jsp文件。雖然…

通信與計算機網絡FSC,數據通信與計算機網絡概述信道習題.pdf

第一章、第二章習題 概述及信道與接口1、目前使用最為普遍的局域網是( )。A. 以太網 B. 標記環網 C.FDDI 網 D.標記總線網2、在 OSI 模型的七層結構中&#xff0c;能進行直接通信的是( )。A. 非同等層間 B. 物理層間 C.數據鏈路層間 D. 網絡層間3、數據通信系統中傳輸的信息稱(…

視覺測量簡介

1.1 視覺測量技術 1.1.1 現代檢測技術的發展趨勢 檢測技術是現代化工業的基礎技術之一&#xff0c;是保證產品質量的關鍵。在現代化的大生產之中&#xff0c;涉及到各種各樣的檢測。隨著工業制造技術和加工工藝的提高和改進&#xff0c;對檢測手段、檢測速度和精度提出了更…

高并發系統之降級特技

2019獨角獸企業重金招聘Python工程師標準>>> 高并發系統之降級特技 博客分類&#xff1a; 架構 在開發高并發系統時有三把利器用來保護系統&#xff1a;緩存、降級和限流。之前已經有一些文章介紹過緩存和限流了。本文將詳細聊聊降級。當訪問量劇增、服務出現問題&a…

處理機的三級調度

在有的操作系統中僅采用一級凋度&#xff0c;而有的操作系統則將凋度分為不同的層次&#xff0c;一個用戶作業從進入系統成為后備作業開始&#xff0c;直到運行結退出系統為止&#xff0c;一般最多經歷三級調度&#xff0c;即處理器調度可以分為以下3個層次。 1.高級調度(High …

進行代碼復審訓練

20180320作業2&#xff1a;進行代碼復審訓練任務說明&#xff1a; 一、結對&#xff0c;找到一個伙伴進行結對&#xff1b;&#xff08;在作業中標注自己的伙伴博客鏈接&#xff09; 王小梅&#xff1a; http://www.cnblogs.com/CURRY-30/p/8570290.html 二、各自對自己的伙伴上…

freeradius 3.0 時間限制_創意營銷3.0新模式下,易企秀要成為中國的Adobe

近幾年&#xff0c;隨著大數據和人工智能技術的發展&#xff0c;智能化、程序化營銷在國內獲得高速發展。從以創意內容、提升效率的工具到現在驅動企業數字化轉型的智能營銷&#xff0c;營銷云在國內的熱度與成熟度不斷提升。營銷云起源于“Enterprise Marketing Software Suit…

用計算機三級處理文件,【題目】計算機三級題目,獻給為計算機三級掙扎的同學們...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓(165)Internet的郵件傳輸協議標準為_______。A)SNMP B)SMTP C)FTP D)TELNET答 案&#xff1a;B知識點&#xff1a;瀏覽器、電了郵件及Web服務器的安全特性評 析&#xff1a;SNMP即簡單網絡管理協議&#xff1b;SMTP即簡單郵件傳輸協…

匈牙利命名法的優缺點

匈牙利約定優點匈牙利約定與其它命名約定一樣&#xff0c;擁有由命名約定所帶來的一切共同優點。由于有這樣多的標準名稱&#xff0c;因此在任何一個單個子程序或程序中要特殊記憶的名字是非常少的。匈牙利約定完全可以在不同項目中采用。匈牙利約定可以使得在命名中容易產生定…

搶占式和非搶占式的進程調度

非搶占式&#xff08;Nonpreemptive&#xff09; 讓進程運行直到結束或阻塞的調度方式 容易實現 適合專用系統&#xff0c;不適合通用系統 搶占式&#xff08;Preemptive&#xff09; 允許將邏輯上可繼續運行的在運行過程暫停的調度方式 可防止單一進程長時間獨占…

圖形學基礎知識

本篇主要給大家介紹圖形學基礎知識&#xff0c;了解Unity圖像渲染機制&#xff0c;以及圖像渲染管線流程。 主要是因為伴隨著VR/AR的飛速發展&#xff0c;為了滿足VR高清高幀率的極限渲染&#xff0c;著色器編程&#xff08;Shader&#xff09;也成為了Unity程序開發人員的必備…

12種排序算法

https://blog.csdn.net/love_gaohz/article/details/46673907 轉載于:https://www.cnblogs.com/kongk/p/8641077.html

計算機應用基礎精品課程申報表,《計算機應用基礎》精品課程申報書(修改意見)...

4-3教學條件(含教材使用與建設&#xff1b;促進學生主動學習的擴充性資料使用情況&#xff1b;配套實驗教材的教學效果&#xff1b;實踐性教學環境&#xff1b;網絡教學環境(網絡平臺&#xff0c;網絡課件))突出的地方用紅色表示。1&#xff0e;教材建設本課程目前使用的教材是…

用博客見證自己的成長

感謝CSDN博客&#xff0c;給我提供了一個學習交流的平臺&#xff0c;自從開通博客以來&#xff0c;感覺自己的生活一下充實了很多。通過寫博客來積累知識的同時&#xff0c;也給生活帶來的很多的喜悅。 第一次發表博客&#xff1b;第一次有訪客&#xff1b;第一次得到博客勛章&…

調度隊列模型

調度隊列模型及準則 1 僅有進程調度的調度隊列模型&#xff1a; 每個進程在執行時都可能出現以下三種情況&#xff1a; (1) 任務在給定的時間片內已經完成&#xff0c;該進程便在釋放處理機后進入完成狀態 (2) 任務在本次分得的時間片內尚未完成&#xff0c;OS便將該任務再放入…

linux基礎命令(-)

最近在學linux&#xff0c;老師課堂上講的估計下課就忘了&#xff0c;現整理下來以備不時之需。 PS1x //修改終端提示符su root //切換用戶ssh root192.168.116.129 //加密遠程連接 yum -y install sl //小火車yum -y install oneko //鼠標兔子date //查看日期cal 11 19…

數據庫相關整理

一、MySQL 1、mysql如何做分頁 mysql數據庫做分頁用limit關鍵字&#xff0c;它后面跟兩個參數startIndex和pageSize 2、mysql引擎有哪些&#xff0c;各自的特點是什么&#xff1f; http://www.cnblogs.com/ctztake/p/8453990.html 3、數據庫怎么建立索引 create index account_…

api接口怎么對接_系統對接項目管理方面怎么做?從一次項目接口對接說起

故事&#xff1a;最近業務方有一個新的業務合作模式&#xff0c;需要與第三方公司進行系統的對接&#xff0c;原本預期2周可以完成的項目&#xff0c;最后要用到3周時間才能完成&#xff0c;出現的現象其實還挺典型的&#xff0c;也不是沒遇到過&#xff0c;因為自己這邊的進度…

周轉時間 平均周轉時間 帶權周轉時間 平均帶權周轉時間

1.周轉時間 2.平均周轉時間 平均周轉時間是對n個而言的 3.帶權周轉時間 真正的運行時間指的是進程占有處理機的時間 4.平均帶權周轉時間 即n個平均的帶權周轉時間