1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        還在手動(dòng)部署springboot項(xiàng)目?不妨試試它,讓你部署項(xiàng)目飛起來(lái)!

        共 9599字,需瀏覽 20分鐘

         ·

        2021-05-15 09:38

        領(lǐng)讀:

        簡(jiǎn)單來(lái)說(shuō),docker是個(gè)好東西!


        作者 | 流星 007

        來(lái)源 |  http://suo.im/6biT68

        目錄

        • docker 介紹

        • 安裝 docker

        • Ubuntu 安裝 docker

        • CentOS 安裝 docker

        • 通過(guò)腳本安裝

        • 拉取 java 環(huán)境

        • 創(chuàng)建 springboot 項(xiàng)目

        • 打包 springboot 到 docker

        • docker 查看容器的日志

        • 查看 log4j2 輸出問(wèn)文件日志

        docker 介紹

        Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux 或 Windows 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

        docker 的核心思想是通過(guò)對(duì)應(yīng)用的封裝、分發(fā)、部署、運(yùn)行生命周期進(jìn)行管理,達(dá)到應(yīng)用組件級(jí)別的 “一次性封裝,到處運(yùn)行”。這里的應(yīng)用組件,可以是一個(gè) web 應(yīng)用,也可以是一個(gè)環(huán)境,更可以是一個(gè)數(shù)據(jù)庫(kù)等等。

        安裝 docker

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

        Ubuntu 安裝 docker

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

        CentOS 安裝 docker

        docker 要求 CentOS 在 7.0 以后的版本,如果你的系統(tǒng)版本還在 7.0 以前,請(qǐng)先升級(jí)一下版本在進(jìn)行安裝,同時(shí)不支持 32 位的系統(tǒng),內(nèi)核版本至少 3.10。

        請(qǐng)先確保沒(méi)有安裝過(guò) docker,否則有可能會(huì)導(dǎo)致安裝失敗,如果之前安裝過(guò),可以嘗試直接 yum isntall -y docker

        1. 更新軟件源第一個(gè)命令

        yum update

        遇到他輸入 y,然后回車(chē),看到下面信息表示更新成功:

        第二個(gè)命令

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

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

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

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

        yum update

        yum install -y docker-ce

        看到這個(gè)頁(yè)面,標(biāo)識(shí) docker 已經(jīng)安裝成功了。

        1. 安裝完成之后啟動(dòng) docker

        systemctl start docker

        1. 重啟

        systemctl restart docker

        1. 停止

        systemctl stop docker

        1. 開(kāi)機(jī)自啟動(dòng)

        systemctl enable docker

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

        systemctl status docker

        通過(guò)腳本安裝

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

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

        或者

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

        拉取 java 環(huán)境

        搜索公縱號(hào):MarkerHub,關(guān)注回復(fù)[ vue ]獲取前后端入門(mén)教程!

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

        docker pull java:8

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

        docker images

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

        創(chuàng)建 springboot 項(xiàng)目

        1. 新建項(xiàng)目

        引入 sprint-boot-web 的依賴(lài)

        新建完成之后的項(xiàng)目結(jié)構(gòu)

        1. 引入 docker 依賴(lài)

        <properties>
               <docker.image.prefix>registry.aliyuncs.com/linhuatest</docker.image.prefix>
            </properties>


         <!-- docker插件 -->
                    <plugin>
                        <groupId>com.spotify</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>1.0.0</version>
                        <configuration>
                            <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                            <!--docker文件所在的目錄-->
                            <dockerDirectory>src/main/docker</dockerDirectory>
                            <resources>
                                <resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}</directory>
                                    <include>${project.build.finalName}.jar</include>
                                </resource>
                            </resources>
                        </configuration>
                    </plugin>

        1. 新建 docker 文件在 main 目錄下新建 docker 目錄,然后在 docker 目錄下創(chuàng)建 dockerfile 文件,不需要后綴名。

        創(chuàng)建完成之后的工程目錄如下:

        1. 編輯 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 是我剛剛拉取的鏡像,運(yùn)行的基礎(chǔ)。VOLUME:指向的一個(gè)臨時(shí)文件,用于存儲(chǔ) tomcat 工作。ADD:復(fù)制文件并且重命名文件。ENTRYPOINT:初始化配置或者自定義配置。

        1. 創(chuàng)建測(cè)試接口

        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("這是控制臺(tái)日志!");
                log.info("這是輸出到文件的日志");
                return   "HELLO-BUG?。。。。。。。。?!";
            }
        }

        在 resources 目錄下創(chuàng)建 log4j2.xml 文件主要看這兩個(gè)參數(shù):

        這里我使用了 log4j2 的日志,如何配置 log4j2 的日志,請(qǐng)參考 springboot 整合 Log4j2(將日志輸出到指定文件)。

        1. 編寫(xiě) application.yml 配置文件

        server:
          port: 9999

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

        . ____ _ __ _ _
         /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
         \\/ ___)| |_)| | | | | || (_| | ) ) ) )
          ' |____| .__|_| |_|_| |_\__, | / / / /
         =========|_|==============|___/=/_/_/_/
         :: 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)

        如果看到這個(gè)頁(yè)面表示 springboot 項(xiàng)目沒(méi)有問(wèn)題,現(xiàn)在我們將項(xiàng)目拷貝到服務(wù)器中。關(guān)注公眾號(hào):Java后端編程,回復(fù):Java 獲取學(xué)習(xí)資料 。

        打包 springboot 到 docker

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

        執(zhí)行

        mvn clean package docker:build

        執(zhí)行完之后將會(huì)看到

        表示打包成功。

        執(zhí)行

        docker images

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

        執(zhí)行

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

        run: 運(yùn)行的意思–name:指定鏡像啟動(dòng)的之后的名稱(chēng) - p:容器和外部的端口映射 第一個(gè)端口:外部 第二個(gè)端口:內(nèi)部 - d:后臺(tái)運(yùn)行 -t: 實(shí)時(shí)運(yùn)行,窗口關(guān)閉,程序結(jié)束。4a2:表示鏡像的 id(IMAGE ID)前 3 位,這里的 id 并不需要輸入全稱(chēng),只需要輸入前幾個(gè)就行,有一個(gè)前提:當(dāng)有很多鏡像的時(shí)候,前面幾個(gè)字符就有可能會(huì)相同,這個(gè)時(shí)候就需要多輸入幾位,直到不相同位置。

        啟動(dòng)了鏡像之后我怎么知道有沒(méi)有成功呢?這個(gè)時(shí)候我們就需要一個(gè)命令來(lái)查看已經(jīng)啟動(dòng)的任務(wù)

        docker ps

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

        docker 查看容器的日志

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

        docker ps

        找到容器的 id

        然后執(zhí)行

        docker logs -f --tail=100 ca

        這個(gè)時(shí)候我們就能看到控制臺(tái)的日志了,如何我們想看 log4j2 輸出的文件日志呢?

        查看 log4j2 輸出問(wèn)文件日志

        還記得我們?cè)?log4j2 中配置了日志的輸出目錄了嗎?

        沒(méi)錯(cuò),就是這個(gè), 我們切換到這個(gè)目下

        發(fā)現(xiàn)這里生成了三個(gè)文件,我們打開(kāi) info.log

        tail -100f info.log

        我們發(fā)現(xiàn)并沒(méi)有輸入我們打印的:“這是輸出到文件的日志”,難道是我們配置錯(cuò)了問(wèn)題?不是的,是因?yàn)槲覀冋义e(cuò)了位置,真正的文件日志在容器內(nèi)部,所以我們需要先進(jìn)入容器內(nèi)部

        docker exec -it ca2cd59fff9b /bin/bash

        ca2cd59fff9b:容器 id

        然后再切換到我們?nèi)罩镜妮敵雎窂?/p>

        cd work/spring-boot-docker

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

        tail -100f info.log

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

        exit
        —————END—————

        推薦閱讀:

        谷歌發(fā)布新編程語(yǔ)言,專(zhuān)治SQL各種不服
        Java實(shí)現(xiàn)超市管理系統(tǒng),包含源代碼!
        Spring Boot 接入支付寶,實(shí)戰(zhàn)來(lái)了!
        Nginx 除了負(fù)載均衡,還能做什么?
        SpringBoot+MyBatis+docker電商項(xiàng)目,附帶超詳細(xì)的文檔!

        最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
        獲取方式:關(guān)注公眾號(hào)并回復(fù) java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
        明天見(jiàn)(??ω??)??
        瀏覽 50
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产污污视频在线观看 | 破處女一級片免費看 | 好逼网123 | 老师翘臀办公室后进式视频 | 国产综合激情 | 欧美成人精品无码 网站 | 好想被c秘 好爽 n 视频网站 | 九热在线视频 | 激情高潮抽搐videos合集 | 少妇好紧好湿好滑好爽 |