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