七、Docker實戰
這里我使用之前的軟件實踐項目來進行Docker從構建到部署一整套實驗。
Step1:Maven打包
進入項目目錄,在Terminal運行Maven命令,通過Maven構建SpringBoot Web項目,將其打成Jar包。
mvn package -Dmaven.test.skip=true
image-20220616094117236
發現項目目錄下生成了一個可執行Jar包,這里我們可以通過jar包來測試。
Step2:上傳Jar包
將Jar包通過FTP工具上傳到服務器~/healthySystem
目錄下
Step3 :編寫Dockerfile
~/healthySystem
目錄下,使用vim Dockerfile
創建一個Dockerfile文件,然后在文件編輯如下內容:
#根據Java15為基礎鏡像
FROM openjdk:11.0.15-oraclelinux7
MAINTAINER tyf
#RUN yum install redis && yum install mysql
#將當前目錄下jar包復制到Docker鏡像中
#將需要額外加載的配置文件加入鏡像
COPY *.jar /app.jar
COPY *.yml /application.yml
#暴露出的端口
EXPOSE 8079
ENTRYPOINT ["java", "-jar", "/app.jar" ~
修改完畢后,保存退出。
Step4:構建Docker鏡像
在~/healthySystem
目錄下執行:
docker build -t healthy:1.0 .
結果顯示Successfully built ......
,構建Images成功
Step5: 測試鏡像
docker run --name healthy --network host healthy:1.0 #執行新實例
image-20220617195045392
執行docker ps
查看容器狀態
image-20220617195129284
打開服務器防火墻,訪問http://81.68.239.206:8093/welcome.htm
,正常啟動。
image-20220617195245538
Step5: 上傳至阿里云倉庫
這里使用我們上述使用的阿里云鏡像倉庫和中心倉庫,在阿里云鏡像倉庫創建完成相應的遠程倉庫后,按照官方操作步驟來完成鏡像推送。
-
登陸至阿里云 Docker Registry
docker login --username=譚永鋒nb registry.cn-shanghai.aliyuncs.com
image-20220617201312628
-
更改鏡像Tag
#docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[鏡像版本號] docker tag 9e78dbdd6dd8 registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201707730
-
上傳鏡像
#docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[鏡像版本號] docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201954652
-
登陸阿里云查看遠程鏡像倉庫,顯示上傳成功。
image-20220617202025429
Step6:測試部署
網站部署步驟:https://github.com/TanYongF/healthyDay
基本流程:
- 安裝Mysql、Redis
- 配置項目配置文件
- 執行下面命令
- 訪問
http://ip:8093
docker run --name healthy --network host registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
八、實驗總結
本次大作業通過學習Docker基本安裝、數據管理、網絡等基礎知識,對Docker的誕生由來以及解決了多依賴項目部署復雜的問題,同時針對特定內容對Docker例如網絡模式,其基于底層隔離和資源限制的基礎——CGroup以及Namespace技術有了一定的理解。
同時又對之前的軟件實習項目的部署引入Docker進行改造,通過編寫Dockerfile以及Docker-compose文件構建出了項目對應的鏡像并且上既然到了云端,從實踐方面體會到了Docker對實際項目運維部署方面帶來的巨大便捷。
由于自身的學習方向是Java后端方向,對于現在接觸比較多的微服務、集群來講,Docker等云原生工具大大降低配置部署難度,同時也讓我對DevOps開發流程的理解逐漸加深,也促使我將將傳統的開發思想逐漸轉變成容器化思想。但是鑒于時間緊迫,對Docker底層原理的細節了解還不是很充分,同時對于業界比較流行的Kubernetes(k8s)等Docker容器編排工具還沒有具體的體驗學習,但是學無止境,未來我也會繼續加深對其中云原生技術的深入學習,努力將自己打造成為新一代DevOps工程師。
參考資料
-
開源軟件
+關注
關注
0文章
210瀏覽量
15900 -
編程
+關注
關注
88文章
3614瀏覽量
93686 -
Docker
+關注
關注
0文章
457瀏覽量
11846
發布評論請先 登錄
相關推薦
評論