国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

絲滑的打包部署,一套帶走~

這篇具有很好參考價(jià)值的文章主要介紹了絲滑的打包部署,一套帶走~。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

以下文章來(lái)源于悟空聊架構(gòu)?,作者悟空聊架構(gòu)

本文主要內(nèi)容如下:

絲滑的打包部署,一套帶走~

目錄

一、背景

絲滑的打包部署,一套帶走~

Docker打包部署方案

項(xiàng)目背景:新項(xiàng)目的后端框架是剛起步,搭建的是一套微服務(wù)框架,基礎(chǔ)服務(wù)有網(wǎng)關(guān) Gateway, Nacos 注冊(cè)中心,以及其他的微服務(wù)。現(xiàn)在需要弄個(gè)簡(jiǎn)單且方便的,基于 Docker 的部署方式。

為什么用 Docker:為了讓后端程序更容易打包部署和管理,所以用上了 Docker 容器化部署。比如用 Docker Swarm 或 K8s 來(lái)管理多個(gè)容器。

為什么要提到 Windows:本地機(jī)器是 Windows 系統(tǒng)開(kāi)發(fā),通過(guò) Windows + IDEA 將應(yīng)用程序打成 Docker 鏡像,然后拷貝到?Linux?服務(wù)器進(jìn)行容器化部署。

  • 疑問(wèn)1:有同學(xué)可能會(huì)有疑問(wèn),Windows 還能跑 Docker 嗎???那必須的!

  • 疑問(wèn)2:如果項(xiàng)目的代碼改了,是不是得重新打包 docker 鏡像?不需要,直接替換 docker volume 里面的 JAR 包即可。

  • 疑問(wèn)3:怎么沒(méi)有用 Jenkins?新項(xiàng)目,新項(xiàng)目,牛奶和面包都會(huì)有的。

二、Windows 運(yùn)行 Docker

2.1 原理

為了在 Windows 能夠打包 Docker 鏡像,就必須弄個(gè)可以運(yùn)行 Docker 的環(huán)境。

Docker 依賴(lài)于已存在并運(yùn)行的 Linux 內(nèi)核環(huán)境。實(shí)質(zhì)上是在已經(jīng)運(yùn)行的 Linux 下制造了一個(gè)隔離的文件環(huán)境,因此它執(zhí)行的效率幾乎等同于所部署的 Linux 主機(jī)。

如果其他系統(tǒng)想部署 Docker 就必須安裝一個(gè)虛擬 Linux 環(huán)境。

2.2 啟用 Hyper-V

絲滑的打包部署,一套帶走~

Windows+虛擬機(jī)+Docker

Windows 自帶的 Hyper-V 工具就是一款管理和創(chuàng)建虛擬機(jī)的工具,要求:Windows 10 企業(yè)版、專(zhuān)業(yè)版或教育版。啟用 Hyper-V 如下所示:

絲滑的打包部署,一套帶走~

啟用 Hyper-V

操作步驟:程序和功能->打開(kāi)或關(guān)閉 Windows 功能->選擇“Hyper-V”,然后單擊“確定

參考鏈接:

https://learn.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

2.3 安裝 Docker for Windows

點(diǎn)擊 官網(wǎng)下載地址,并下載 Windows 的版本,安裝就是一路點(diǎn)擊 next 就好了。

官網(wǎng)下載地址:https://www.docker.com/products/docker-desktop/

安裝好之后,打開(kāi) Windows 的Powershell 命令行窗口,執(zhí)行 docker run hello-world。當(dāng)看到 Hello from Docker!就表示安裝成功。

絲滑的打包部署,一套帶走~

好了,現(xiàn)在我們開(kāi)發(fā)環(huán)境擁有了運(yùn)行 docker 容器,打包 docker 鏡像的能力。接下來(lái)我們來(lái)看下如何用 IDEA 開(kāi)發(fā)工具來(lái)啟動(dòng) docker 容器和打包鏡像。

三、IDEA 打包鏡像

IDEA 工具很強(qiáng)大,提供 Docker 相關(guān)的功能。

IDEA 打包 Docker 鏡像的方式主要分為這么幾步:

  • 通過(guò) Maven 工具將 SpringBoot 應(yīng)用程序打成可執(zhí)行的 JAR 包。

  • IDEA 執(zhí)行指定的 Dockerfile 打包成 Docker 鏡像。

這里我寫(xiě)了一個(gè)簡(jiǎn)單 SpringBoot 項(xiàng)目,定義了一個(gè)簡(jiǎn)單的 Rest API 接口。

絲滑的打包部署,一套帶走~

應(yīng)用程序的端口為 9600。

server.port=9600

3.1 Maven Build JAR 包

Maven 打包的話(huà)這個(gè)我們都比較熟悉,直接執(zhí)行 Maven 命令(mvn package)或者在 IDEA 上點(diǎn)擊 Maven 相關(guān)按鈕即可。就會(huì)生成這樣一個(gè)包

operation-core-0.0.1-SNAPSHOT,我們可以把它的名字改短一點(diǎn),就改為 ?operation.jar 吧

3.2 編寫(xiě) Dockerfile

Dockerfile 又是什么呢?

它是一個(gè)用來(lái)構(gòu)建鏡像的文本文件,文件內(nèi)容就是一條條構(gòu)建鏡像所需的指令和說(shuō)明。

我們就到項(xiàng)目創(chuàng)建兩個(gè) dockerfile 文件吧,一個(gè)用作開(kāi)發(fā)環(huán)境的,一個(gè)用作生產(chǎn)環(huán)境的。

絲滑的打包部署,一套帶走~

如下所示:

#?拉取指定的鏡像文件
FROM?hub.c.163.com/library/java:latest

#?MAINTAINER?指令允許你給將要制作的鏡像設(shè)置作者信息
MAINTAINER?wukong?<1@163.com>
#?容器內(nèi)創(chuàng)建一個(gè)?apps?目錄,用來(lái)掛載?jar?包
RUN?mkdir?-p?/apps
#?將?passjavas-demo-1.0?jar?包復(fù)制到?/apps/passjava-demo.jar
ADD?passjava-demo-1.0.jar?/apps/passjava-demo.jar
#?設(shè)置時(shí)區(qū)
ENV?TZ?"Asia/Shanghai"
#?設(shè)置暴露的端口
EXPOSE?9600
#dockerfile中增加健康檢查,interval表示每個(gè)5分鐘檢查一次,timeout每次超過(guò)5秒鐘認(rèn)定為失敗,retries失敗后輪詢(xún)3次認(rèn)定為容器不健康,考慮重啟。
#HEALTHCHECK?--interval=60s?--timeout=5s?--retries=6?\
#??CMD?curl?-f?http://localhost:8989/health?||?exit?1
#?運(yùn)行?Java?應(yīng)用程序的命令
ENTRYPOINT?["java","-jar","/apps/passjava-demo.jar"]

3.3 配置和執(zhí)行 Dockerfile

在 IDEA 里面創(chuàng)建一個(gè) 運(yùn)行配置,添加一個(gè) Dockerfile 配置,如下所示:

絲滑的打包部署,一套帶走~

開(kāi)始運(yùn)行這個(gè)配置后,IDEA 就會(huì)根據(jù) dockerfile 里面的配置自動(dòng)拉取 Java JDK 鏡像文件,這個(gè)過(guò)程會(huì)比較長(zhǎng),Java JDK 還是比較大的。

拉取之后,會(huì)一步步執(zhí)行 dockerfile 里面的命令,最后會(huì)啟動(dòng)一個(gè) docker 容器。

絲滑的打包部署,一套帶走~

3.4 測(cè)試

我們來(lái)測(cè)試下 Java 程序是否正常運(yùn)行。還是用 curl 命令訪(fǎng)問(wèn) Restful API。

curl?http://localhost:9600/test

絲滑的打包部署,一套帶走~

咦?居然訪(fǎng)問(wèn)不通,這是為啥??

我們來(lái)排查下。先看下容器日志,執(zhí)行命令 docker logs <容器id>,可以看到 Java 應(yīng)用程序正常啟動(dòng),也沒(méi)有報(bào)錯(cuò)日志。

絲滑的打包部署,一套帶走~

那說(shuō)明可能是網(wǎng)絡(luò)問(wèn)題,比如容器的端口和我們本機(jī)的端口沒(méi)有映射。果不其然。這里端口是否沒(méi)有映射的,如下圖所示。

絲滑的打包部署,一套帶走~

那說(shuō)明通過(guò)這種方式雖然能正常啟動(dòng)程序,但是程序不能提供服務(wù),那就換一種方式。上面的方式是通過(guò) Dockerfile 創(chuàng)建了一個(gè)鏡像文件,然后 IDEA 工具幫我們啟動(dòng)了一個(gè) Docker 容器,但是這種容器還缺少一些參數(shù),比如端口映射沒(méi)有做。要不我們就自己來(lái)啟動(dòng)一個(gè)容器看看?自己?jiǎn)?dòng)就是通過(guò) docker run 命令即可,不過(guò)也可以通過(guò)創(chuàng)建一個(gè) IDEA container 配置來(lái)啟動(dòng)一個(gè)容器。

3.5 IDEA 自定義容器

如下圖所示,自定義一個(gè)容器跑配置。因?yàn)樯厦娴牟襟E我們已經(jīng)創(chuàng)建了鏡像了,所以可以直接用這個(gè)鏡像即可。

絲滑的打包部署,一套帶走~

話(huà)不多說(shuō),直接運(yùn)行起來(lái)看下。

絲滑的打包部署,一套帶走~

再來(lái)看下端口映射,這次就映射好了,完美!

絲滑的打包部署,一套帶走~

再來(lái)測(cè)試下是否能訪(fǎng)問(wèn) API。還是用 curl 命令,返回結(jié)果如下,這次就成功了。

passjava,悟空聊架構(gòu)

絲滑的打包部署,一套帶走~

四、部署到服務(wù)器

4.1 部署思路

不過(guò)這都是在我們本地玩的,如何把它弄到服務(wù)器上呢??步驟如下:

  • 把鏡像保存為一個(gè)壓縮包,上傳到服務(wù)器,服務(wù)器上用命令啟動(dòng)容器。

  • 如果有代碼修改,把項(xiàng)目重新打成 JAR 包上傳到掛載的目錄就可以了。

如下圖,和文章最開(kāi)始看到的圖相比,做了一些簡(jiǎn)化,思路是一致的。

絲滑的打包部署,一套帶走~

4.2 部署

先在本地把 docker 鏡像打成一個(gè) tar 包。

docker?save?passjava-docker-demo-23.02?-o?D:\passjava-demo.tar

然后把這個(gè) tar 包拷貝到 Linux 服務(wù)器。

絲滑的打包部署,一套帶走~

將鏡像拷貝到服務(wù)器

接著將 tar 加載為 docker 鏡像

docker?load?-i?passjava-demo.tar

絲滑的打包部署,一套帶走~

passjava-demo鏡像包

然后就可以通過(guò)命令來(lái)啟動(dòng)容器了。命令里面包含了掛載的目錄卷,端口映射,啟動(dòng)方式等。

docker?run?--name?passjava-demo?-d?\
-v?/nfs-data/service:/nfs-data/service?\
-v?/nfs-data/service/apps:/apps?\
-v?/nfs-data/service/logs:/nfs-data/service/logs?\
--restart=always?\
-p?9600:9600?\
passjava-docker-demo-23.02

咦,啟動(dòng)容器又報(bào)錯(cuò)了,查看日志提示找不到 jar 包。

絲滑的打包部署,一套帶走~

啟動(dòng)報(bào)錯(cuò),找不到 jar 包

哦,想起來(lái)了,掛載上面的 apps 目錄后,容器會(huì)從容器里面的 apps 目錄找 JAR 包,發(fā)現(xiàn)沒(méi)有這個(gè) jar 包,當(dāng)然報(bào)錯(cuò)了呀!

絲滑的打包部署,一套帶走~

運(yùn)行命令

而這個(gè) apps 目錄正好是和宿主服務(wù)器的 /nfs-data/service/apps 目錄做了映射的,這個(gè)目錄沒(méi)有 jar 包,容器里面的 apps 目錄也就沒(méi)有 jar 包。所以我們可以把 jar 包拷貝到這個(gè)目錄就好了。

絲滑的打包部署,一套帶走~

等等,為什么用 IDEA 啟動(dòng)容器時(shí)沒(méi)有問(wèn)題?因?yàn)楫?dāng)時(shí)沒(méi)有 IDEA 做目錄的映射。

啟動(dòng)完成后,我們來(lái)測(cè)試下部署的服務(wù)是否正常。

絲滑的打包部署,一套帶走~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-419594.html

到了這里,關(guān)于絲滑的打包部署,一套帶走~的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包