<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Doker部署springBoot項(xiàng)目

          共 2671字,需瀏覽 6分鐘

           ·

          2021-07-03 15:11


          今天我們分享一個(gè)小知識(shí)點(diǎn)——docker部署springboot項(xiàng)目,之所以說它是個(gè)小知識(shí)點(diǎn),是因?yàn)閮?nèi)容不多,而且也很簡單,內(nèi)容主要包含兩個(gè)方面,一個(gè)是基于docker構(gòu)建springboot項(xiàng)目的鏡像,一個(gè)就是用docker啟動(dòng)我們的springboot項(xiàng)目鏡像。

          編寫Dockerfile文件

          首先,我們要編寫這樣一份Dockfile,文件名就就是Dockerfile,沒有后綴名,這個(gè)文件在項(xiàng)目的根目錄下,可以先看我的項(xiàng)目結(jié)構(gòu):

          然后在Dockerfile中寫入如下內(nèi)容,項(xiàng)目不同,配置有所不同,可根據(jù)自己的需要進(jìn)行修改:

          # Docker image for springboot file run
          # VERSION 0.0.1
          # Author: eangulee
          # 基礎(chǔ)鏡像使用java
          FROM java:8
          # 作者
          MAINTAINER syske <[email protected]>
          # VOLUME 指定了臨時(shí)文件目錄為/tmp。
          # 其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp
          VOLUME /tmp 
          # 將jar包添加到容器中并更名為springboot-learning.jar
          ADD target/springboot-learning-0.0.1-SNAPSHOT.jar /springboot-learning.jar 
          # 運(yùn)行jar包
          RUN bash -c 'touch /springboot-learning.jar'
          ENV TZ 'Asia/Shanghai'
          EXPOSE 8089
          ENTRYPOINT ["java","-jar","/springboot-learning.jar"]

          這里簡單介紹下這個(gè)文件的結(jié)構(gòu)。

          FROM的作用是指定項(xiàng)目的運(yùn)行環(huán)境,這里我們指定的是java8;

          VOLUME 指定了臨時(shí)文件目錄為/tmp。其效果是在主機(jī) /var/lib/docker目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp。該步驟是可選的,如果涉及到文件系統(tǒng)的應(yīng)用就很有必要了。

          /tmp目錄用來持久化到 Docker 數(shù)據(jù)文件夾,因?yàn)?Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認(rèn)使用/tmp作為工作目錄 項(xiàng)目的 jar 文件作為 springboot-learning.jar添加到容器的ENTRYPOINT 執(zhí)行項(xiàng)目 springboot-learning.jar。為了縮短 Tomcat啟動(dòng)時(shí)間,添加一個(gè)系統(tǒng)屬性指向 /dev/./urandom作為 Entropy Source。

          ADD就是將我們編譯的jar文件添加到容器中,這里可以知道加入容器的文件名;

          RUN bash -c就是運(yùn)行shell命令;

          ENV作用是這是環(huán)境變量,這里設(shè)置的是時(shí)區(qū);

          EXPOSE的作用是指定容器運(yùn)行端口;

          ENTRYPOINT的作用是指定容器運(yùn)行命令,指定之后,容器運(yùn)行的時(shí)候就會(huì)執(zhí)行我們指定的命令;

          關(guān)于Dockerfile編寫,可以參考菜鳥教程:

          https://www.runoob.com/docker/docker-dockerfile.html

          項(xiàng)目打包

          在編寫Dockerfile的時(shí)候,我們指定了jar文件的名字,所以在運(yùn)行Dockerfil之前,我們要先打包好項(xiàng)目的jar文件,確保Dockerfile中指定的jar文件已經(jīng)編譯好:

          打包完成后,我們就可以制作我們的springboot項(xiàng)目的鏡像了。

          制作鏡像

          首先確保本地docker已經(jīng)啟動(dòng),然后在項(xiàng)目根目錄,即Dockerfile所在目錄

          執(zhí)行如下命令:

          docker build -t springboot-learning:v1 .

          -t 參數(shù)是指定此鏡像的tag名,一般通常就是項(xiàng)目名:版本號。注意最后面的.,不要忘記了。

          如果有如下提示,則表面springboot項(xiàng)目的鏡像構(gòu)建完成,如果你是第一次構(gòu)建,要拉取java8的鏡像,所以時(shí)間可能會(huì)比較長:

          然后我們可以通過下面的命令查看本地鏡像:

          docker images

          其中就有我們剛剛構(gòu)建完成的鏡像:

          啟動(dòng)springboot鏡像

          啟動(dòng)我們構(gòu)建的鏡像與啟動(dòng)其他鏡像沒有本質(zhì)區(qū)別,只是我們在指定端口的時(shí)候,容器的端口就是我們前面構(gòu)建時(shí)指定的端口:

          docker run --rm --name springboot-learning -p 8089:8089 springboot-learning:v1

          另外這里的鏡像版本號,也要和構(gòu)建文件保持一致?;剀囍?,你就會(huì)看到熟悉的springboot啟動(dòng)日志信息:

          這里我為了方便查看,沒有加-d(后臺(tái)運(yùn)行),所以你ctrl+c后,容器會(huì)自動(dòng)停止,一般我們線上運(yùn)行都是后臺(tái)運(yùn)行的。

          測試

          我的項(xiàng)目中有測試的controller,我們?yōu)g覽器訪問下看看:

          和我們直接在本地java -jar啟動(dòng)一樣,沒有任何區(qū)別。

          最后,簡單總結(jié)下,最近一段時(shí)間,我們分享了很多云生態(tài)相關(guān)的知識(shí),包括dokcerk8s等比較主流的技術(shù),讓包括我在內(nèi)的各位小伙伴對java云生態(tài)有了一些初步的認(rèn)識(shí)和了解。

          然后再加上我們今天分享的springboot項(xiàng)目鏡像構(gòu)建,現(xiàn)在這一連串的技術(shù)已經(jīng)差不多全都被我們串起來了,可以這樣說,如果這些知識(shí)你自己都有動(dòng)手做過,都有實(shí)踐過,那你對目前主流的云生態(tài)應(yīng)該已經(jīng)有了最基本的認(rèn)知,至少在使用和應(yīng)用方面沒有太多的問題。后面我們再分享下kuboard的用法,我們的springboot項(xiàng)目就可以運(yùn)行在k8s中了,然后剩下的更細(xì)節(jié)的知識(shí)點(diǎn)就靠各位小伙伴自己去探索學(xué)習(xí)了。好了,今天的內(nèi)容就到這里了。

          - END -


          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  怕怕视频2017 | 男女操逼视频免费 | 日韩A级电影在线 | 操逼操无码 | 日日射视频 |