<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>

          還在手動啟動SpringBoot項目?Docker部署不香嗎?

          共 6433字,需瀏覽 13分鐘

           ·

          2020-12-22 16:33

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 6 分鐘。

          來自:toutiao.com/i6843391272229536267

          docker介紹

          Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
          docker的核心思想是通過對應(yīng)用的封裝、分發(fā)、部署、運行生命周期進行管理,達到應(yīng)用組件級別的“一次性封裝,到處運行”。這里的應(yīng)用組件,可以是一個web應(yīng)用,也可以是一個環(huán)境,更可以是一個數(shù)據(jù)庫等等。

          安裝docker

          既然docker這么神奇,那我們?nèi)绾伟惭bdocker呢?我們一起來走一下吧。

          Ubuntu安裝docker

          由于本人的系統(tǒng)是CentOS,所以這里就只展示一下CentOS的安裝方式,Ubuntu以及其他系統(tǒng)請自行百度。

          CentOS安裝docker

          docker要求CentOS在7.0以后的版本,如果你的系統(tǒng)版本還在7.0以前,請先升級一下版本在進行安裝,同時不支持32位的系統(tǒng),內(nèi)核版本至少3.10。
          請先確保沒有安裝過docker,否則有可能會導(dǎo)致安裝失敗,如果之前安裝過,可以嘗試直接yum isntall -y docker
          1.更新軟件源第一個命令

          yum?update

          遇到他輸入y,然后回車,看到下面信息表示更新成功:
          第二個命令

          yum?install?-y?yum-utils?device-mapper-persistent-data?lvm2



          2.添加docker穩(wěn)定版本的yum軟件源

          yum-config-manager?--add-repo?https://download.docker.com/linux/centos/docker-ce.repo

          3.再次更新yum源,并安裝docker

          yum?update

          yum?install?-y?docker-ce

          看到這個頁面,標識docker已經(jīng)安裝成功了。4.安裝完成之后啟動docker

          systemctl?start?docker

          5.重啟

          systemctl?restart?docker

          6.停止

          systemctl?stop?docker

          7.開機自啟動

          systemctl?enable?docker

          8.查看docker的狀態(tài)

          systemctl?status?docker

          通過腳本安裝

          除了上面的yum安裝,還可以采用shell腳本安裝,安裝流程如下:

          curl?-fsSL?https://get.docker.com/?|?sh

          或者

          wget?-qO-?https://get.docker.com/?|?sh

          拉取java環(huán)境

          拉取jdk很簡單,直接執(zhí)行一行代碼即可,我這里拉取的時java 8的版本。

          docker?pull?java:8

          拉取完成之后執(zhí)行:

          docker?images

          如果出現(xiàn)下面內(nèi)容,表示拉取成功

          創(chuàng)建springboot項目

          1.新建項目
          引入sprint-boot-web的依賴
          新建完成之后的項目結(jié)構(gòu)
          2.引入docker依賴

          <properties>
          ???????<docker.image.prefix>registry.aliyuncs.com/linhuatestdocker.image.prefix>
          ????properties>


          ?
          ????????????<plugin>
          ????????????????<groupId>com.spotifygroupId>
          ????????????????<artifactId>docker-maven-pluginartifactId>
          ????????????????<version>1.0.0version>
          ????????????????<configuration>
          ????????????????????<imageName>${docker.image.prefix}/${project.artifactId}imageName>
          ????????????????????
          ????????????????????<dockerDirectory>src/main/dockerdockerDirectory>
          ????????????????????<resources>
          ????????????????????????<resource>
          ????????????????????????????<targetPath>/targetPath>
          ????????????????????????????<directory>${project.build.directory}directory>
          ????????????????????????????<include>${project.build.finalName}.jarinclude>
          ????????????????????????resource>
          ????????????????????resources>
          ????????????????configuration>
          ????????????plugin>

          3.新建docker文件在main目錄下新建docker目錄,然后在docker目錄下創(chuàng)建dockerfile文件,不需要后綴名。
          創(chuàng)建完成之后的工程目錄如下:
          4.編輯dockerfile文件

          FROM?java:8
          VOLUME?/tmp/tomcat
          ADD?spring-boot-docker-0.0.1-SNAPSHOT.jar?springboot-docker.jar
          ENTRYPOINT?["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-docker.jar"]

          FROM:指定存在的鏡像,java:8是我剛剛拉取的鏡像,運行的基礎(chǔ)。VOLUME:指向的一個臨時文件,用于存儲tomcat工作。ADD:復(fù)制文件并且重命名文件。ENTRYPOINT:初始化配置或者自定義配置。
          5.創(chuàng)建測試接口
          TestController內(nèi)容如下:

          package?com.ymy.controller;

          import?lombok.extern.slf4j.Slf4j;
          import?org.springframework.web.bind.annotation.RequestMapping;
          import?org.springframework.web.bind.annotation.RequestMethod;
          import?org.springframework.web.bind.annotation.RestController;

          @RestController
          @Slf4j?
          public?class?TestController?{

          ????@RequestMapping(value?=?"/test",method?=?RequestMethod.GET)
          ????public?String?test(){
          ????????System.out.println("這是控制臺日志!");
          ????????log.info("這是輸出到文件的日志");
          ????????return???"HELLO-BUG!!!!!!!!!!";
          ????}
          }

          在resources目錄下創(chuàng)建log4j2.xml文件主要看這兩個參數(shù):
          這里我使用了log4j2的日志,如何配置log4j2的日志,請參考 springboot整合Log4j2(將日志輸出到指定文件)。
          6.編寫application.yml配置文件

          server:
          ??port:?9999

          到這里springboot項目就創(chuàng)建完成了,我們現(xiàn)在啟動一下項目。

          ??.???____??????????_????????????__?_?_
          ?/\\?/?___'_?__?_?_(_)_?__?__?_?\?\?\?\?(?(?)\___?|?'_?|?'_|?|?'_?\/?_`?|?\?\?\?\
          ?\\/??___)|?|_)|?|?|?|?|?||?(_|?|??)?)?)?)
          ??'??|____|?.__|_|?|_|_|?|_\__,?|?/?/?/?/
          ?=========|_|==============|___/=/_/_/_/
          ?::?Spring?Boot?::????????(v2.2.5.RELEASE)

          15:29:19.386?[main]?INFO??com.ymy.SpringBootDockerApplication??-?Starting?SpringBootDockerApplication?on?LAPTOP-3GLHJRE9?with?PID?20652?(D:\springboot\spring-boot-docker\target\classes?started?by?admin?in?D:\springboot)
          15:29:19.395?[main]?INFO??com.ymy.SpringBootDockerApplication??-?No?active?profile?set,?falling?back?to?default?profiles:?default
          15:29:20.183?[main]?INFO??org.springframework.boot.web.embedded.tomcat.TomcatWebServer??-?Tomcat?initialized?with?port(s):?9999?(http)
          15:29:20.200?[main]?INFO??org.apache.coyote.http11.Http11NioProtocol??-?Initializing?ProtocolHandler?["http-nio-9999"]
          15:29:20.201?[main]?INFO??org.apache.catalina.core.StandardService??-?Starting?service?[Tomcat]
          15:29:20.201?[main]?INFO??org.apache.catalina.core.StandardEngine??-?Starting?Servlet?engine:?[Apache?Tomcat/9.0.31]
          15:29:20.309?[main]?INFO??org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]??-?Initializing?Spring?embedded?WebApplicationContext
          15:29:20.309?[main]?INFO??org.springframework.web.context.ContextLoader??-?Root?WebApplicationContext:?initialization?completed?in?881?ms
          15:29:20.452?[main]?INFO??org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor??-?Initializing?ExecutorService?'
          applicationTaskExecutor'
          15:29:20.568?[main]?INFO??org.apache.coyote.http11.Http11NioProtocol??-?Starting?ProtocolHandler?["http-nio-9999"]
          15:29:20.596?[main]?INFO??org.springframework.boot.web.embedded.tomcat.TomcatWebServer??-?Tomcat?started?on?port(s):?9999?(http)?with?context?path?'
          '
          15:29:20.599?[main]?INFO??com.ymy.SpringBootDockerApplication??-?Started?SpringBootDockerApplication?in?1.664?seconds?(JVM?running?for?4.04)

          如果看到這個頁面表示springboot項目沒有問題,現(xiàn)在我們將項目拷貝到服務(wù)器中。

          打包springboot到docker

          我現(xiàn)在已經(jīng)將項目拷貝到服務(wù)器中,我們現(xiàn)在需要將它打包到docker中,借助maven實現(xiàn)打包,如果還沒有安裝maven的,請先安裝maven,切換到項目的根目錄
          執(zhí)行

          mvn?clean?package?docker:build

          執(zhí)行完之后將會看到
          表示打包成功。
          執(zhí)行

          docker?images

          我們發(fā)現(xiàn)docker的鏡像中多了一個springboot/spring-boot-docker,沒錯,這個就是我們的springboot項目,既然鏡像已經(jīng)生成,那么如何使用這個鏡像呢?
          執(zhí)行

          docker?run?--name?springbooot-docker???-p?9999:9999?-d?4a2

          run:運行的意思–name:指定鏡像啟動的之后的名稱-p:容器和外部的端口映射 第一個端口:外部 第二個端口:內(nèi)部-d:后臺運行 -t:實時運行,窗口關(guān)閉,程序結(jié)束。4a2:表示鏡像的id(IMAGE ID)前3位,這里的id并不需要輸入全稱,只需要輸入前幾個就行,有一個前提:當有很多鏡像的時候,前面幾個字符就有可能會相同,這個時候就需要多輸入幾位,直到不相同位置。
          啟動了鏡像之后我怎么知道有沒有成功呢?這個時候我們就需要一個命令來查看已經(jīng)啟動的任務(wù)

          docker?ps

          我們發(fā)現(xiàn)這里已經(jīng)出現(xiàn)了我們之前啟動的鏡像,所以這基本上代表啟動成功了,為了驗證是否啟動成功,我們在瀏覽器輸入測試的接口:ip:9999/test

          docker查看容器的日志

          這說明我們已經(jīng)springboot項目已經(jīng)啟動成功了,到這里docker部署springboot項目差不就結(jié)束了,但是你可能還有一個疑問,如果我想看控制臺的日志怎么辦呢?像我們一般使用java -jar的時候都會生成一個控制臺的日志文件,那docker容器中怎么查看控制臺日志呢?其實很簡單,只需要一行命令即可

          docker?ps

          找到容器的id
          然后執(zhí)行

          docker?logs?-f?--tail=100?ca

          這個時候我們就能看到控制臺的日志了,如何我們想看log4j2輸出的文件日志呢?

          查看log4j2輸出問文件日志

          還記得我們在log4j2中配置了日志的輸出目錄了嗎?
          沒錯,就是這個, 我們切換到這個目下
          發(fā)現(xiàn)這里生成了三個文件,我們打開info.log

          tail?-100f?info.log

          我們發(fā)現(xiàn)并沒有輸入我們打印的:“這是輸出到文件的日志”,難道是我們配置錯了問題?不是的,是因為我們找錯了位置,真正的文件日志在容器內(nèi)部,所以我們需要先進入容器內(nèi)部

          docker?exec?-it?ca2cd59fff9b?/bin/bash

          ca2cd59fff9b:容器id
          然后再切換到我們?nèi)罩镜妮敵雎窂?/section>

          cd?work/spring-boot-docker

          這里也找到了三個日志文件,我們打印info.log

          tail?-100f?info.log

          這就是我們log4j2輸出到文件的日志,到這里docker整合springboot項目就差不多結(jié)束了,如果想要退出docker容器可以使用

          exit

          推薦閱讀:

          為什么不建議在 MySQL 中使用 UTF-8?

          通過Nginx反向代理,實現(xiàn)遠程調(diào)試本機代碼

          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「2048」,即可免費獲取!!

          微信掃描二維碼,關(guān)注我的公眾號

          朕已閱?

          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  伊人永久在线 | jiZZJIZZ成熟丰满少妇 | 亚洲av大全 | 日本高清在线一区 | 精品一区av |