前言
- 大家好,很抱歉今天才更新,昨天工作有點忙。忙到很晚才得空,今天就把欠大家的先補上。
- 今天我們來說說,上一篇文章我們遺留下來的一些問題。
- 如何將我們自己的項目部署到鏡像當中?
- 如何構建自己的鏡像?
- 如何使用github實現自動構建鏡像?
- 如何上傳下載自己的鏡像?
- 接下來我們一條一條的說,大家安心往下看。
- 沒有看上一篇文章的同學,可以先上跳還在手動搭建各種環境?docker容器教你一步到位
docker中如何部署自己的項目?
上一篇文章中我們介紹了如何拉取tomcat以及java相關鏡像、啟動容器。而且我們也成功的訪問到了tomcat的首頁。那我們該如何將自己的war或者是jar包部署到我們的docker容器中以達到項目部署的目的呢?
-
那我們首先來說一下如何在docker鏡像中部署war包。
首先我們需要docker的環境。
其次我們需要一個可部署的war包。
我們創建一個文件夾,將war包copy進去。
-
然后通過vim編輯器創建一個Dockerfile
# 首先進入我們的目錄 $ cd 我們創建的文件夾 # 創建Dockerfile文件 $ vim Dockerfile
-
Dockerfile
# 在Dockerfile中放入如下命令 # 指定基礎鏡像 from hub.c.163.com/library/tomcat # 這段可有可無 MAINTAINER Leiyuan 15326047083@163.com # 使用copy或者add命令將 test.war 也就是我們的war包添加到容器中的對應tomcat的webapps目錄中 COPY test.war /usr/local/tomcat/webapps
如上文件中將war包添加到了webapps中,那當我們啟動容器是,會自動解壓war包。
-
其次我們來說一下如何在docker鏡像中部署我們的jar包。
-
比如說我們的springboot項目。一般來說我們都是默認生成了可執行jar包。我們在普通的java環境中是執行如下命令以啟動jar包。
# 這里我們假設我們當前目錄有test.jar文件 $ nohup java -Dserver.port=部署端口 -jar test.jar # nohup意為后臺運行,他的日志文件會自動生成到當前目錄下的nohup.out,當然也可以手動指定 # -Dserver.port=部署端口。這是為了指定我們的映射端口。也就是說不管我們jar包中的端口為多少。都以部署端口為準
從上面可以看出來我們的jar包運行時需要手動去執行啟動命令的,那我們如何將其部署到docker鏡像中呢?繼續往下看。
同樣的我們創建一個文件夾,將jar包copy進去。
然后通過vim編輯器創建一個Dockerfile
-
Dockerfile
# 指定基礎鏡像 from hub.c.163.com/library/tomcat # 這行為鏡像信息,可有可無 MAINTAINER Leiyuan 15326047083@163.com # copy 當前目錄下的test.jar到鏡像根目錄下test.jar ADD test.jar test.jar # 暴露端口,我這里記不清我項目里面暴露的端口是多少,所以我把可能的端口全部暴露出來 EXPOSE 8080 EXPOSE 8081 EXPOSE 80 # 這段是最終要的 # 這里是在容器啟動成功后,在容器內執行如下命令。也就是 java -jar test.jar ENTRYPOINT ["java","-jar","test.jar"]
看到這里有人可能要問了。這樣的話并非后臺執行,關閉終端jar是不是就停止運行了呢?那這里解釋一下,一般來說,我們啟動容器時同樣會是后臺運行,所以容器內的命令就不用可以的去執行后臺啟動。
-
docker鏡像所需要的文件我們都準備好了,緊接著我們來說說如何構建docker鏡像。
Dockerfile、jar、war都準備好了,如何構建鏡像?
首先我們還是要進入剛才創建好的文件夾。
-
然后執行如下命令
# -t 代表指明鏡像名稱和標簽,千萬注意后面還有一個 . 這個點代表當前目錄 $ docker build -t 鏡像名稱:鏡像標簽 .
WeChat62ca651be5ded5e7ce4971ca4606bb3d -
運行結果如上,那我們查詢一下
$ docker images
WeChat3eca097af1613e5c6d6b8e137152777c 查詢沒有問題,那我們的鏡像就算是構建成功。
那剩下的就是照常起訂就可以,這里就不再贅述。
結束語
- 本來以為今天可以說完的,但是腦子里又浮現了一些新的用途想法,所以今天先就到這里。
- 來說說剩余的知識點以及剛才在腦子里浮現出來的想法。
- 如何使用github實現自動構建鏡像?
- 如何上傳下載自己的鏡像?
- 既然可以通過github實現鏡像的自動構建,那我們是不是可以通過shell腳本在服務器做定時任務實現自動拉取鏡像并且自動部署呢?
- 那上述三點,我們放到明天的文章里面進行講述。
- 非常感謝大家的關注和支持,一定會有更多的好的知識點分享給大家。
- 感謝??????!!!