SpringBoot基礎(chǔ)教程(十六)——與docker的結(jié)合

最近一段時(shí)間霍弹,容器化成為了一種趨勢(shì)。一臺(tái)服務(wù)器可以虛擬成多個(gè)容器娃弓,同時(shí)提供服務(wù)典格,共享硬件資源,節(jié)約成本台丛,容器化的翹楚就是Docker耍缴,我司的所有微服務(wù)的發(fā)布都已經(jīng)容器化。spring boot 也緊跟潮流挽霉,加入了Docker的maven插件防嗡,可以通過執(zhí)行命令來制作鏡像。

本節(jié)的主要內(nèi)容不是講代碼侠坎,而是講這個(gè)Docker插件蚁趁。廢話不多說,上pom

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.12</version>
                <configuration>
                    <!-- 注意imageName一定要是符合正則[a-z0-9-_.]的实胸,否則構(gòu)建不會(huì)成功 -->
                    <!-- 詳見:https://github.com/spotify/docker-maven-plugin    Invalid repository name ... only [a-z0-9-_.] are allowed-->
                    <imageName>spring-boot-docker-start</imageName>
                    <!--相當(dāng)于from java,本地有使用本地的鏡像他嫡,沒有的話從遠(yuǎn)程倉庫拉取-->
                    <baseImage>java</baseImage>
                    <exposes>
                        <!--暴露容器內(nèi)的8080端口-->
                        <expose>8080</expose>
                    </exposes>
                    <!--進(jìn)入點(diǎn),執(zhí)行的命令-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

imageName就是鏡像的名稱庐完。baseImage是基礎(chǔ)鏡像涮瞻,本地有使用本地的鏡像,沒有的話從遠(yuǎn)程倉庫拉取假褪,暴露容器內(nèi)的8080端口署咽,執(zhí)行java -jar 命令,啟動(dòng)微服務(wù)生音。我們知道使用Docker需要制定Dockerfile文件宁否,里面的元素完全通過maven插件的標(biāo)簽來體現(xiàn)了。還是有前提的缀遍,你得先安裝好Docker慕匠。講解到這里,我們開始運(yùn)行
第一步:執(zhí)行mvn clean package docker:build創(chuàng)建生成鏡像域醇。
第二步:?jiǎn)?dòng)鏡像docker run -it -P spring-boot-docker-start,看下容器內(nèi)的日志

?  spring-boot-docker-start git:(master) docker run -it -P spring-boot-docker-start

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.5.RELEASE)

2018-03-25 08:41:56.274  INFO 1 --- [           main] com.shuqi.ApplicationMain                : Starting ApplicationMain on 075543f8f5b6 with PID 1 (/spring-boot-docker-start.jar started by root in /)
2018-03-25 08:41:56.287  INFO 1 --- [           main] com.shuqi.ApplicationMain                : No active profile set, falling back to default profiles: default
2018-03-25 08:41:56.406  INFO 1 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@126d28d3: startup date [Sun Mar 25 08:41:56 UTC 2018]; root of context hierarchy
2018-03-25 08:41:58.356  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2018-03-25 08:41:58.382  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2018-03-25 08:41:58.384  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.33
2018-03-25 08:41:58.512  INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-03-25 08:41:58.512  INFO 1 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2113 ms
2018-03-25 08:41:58.920  INFO 1 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2018-03-25 08:41:58.928  INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-03-25 08:41:58.937  INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-03-25 08:41:58.937  INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-03-25 08:41:58.938  INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2018-03-25 08:41:59.406  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@126d28d3: startup date [Sun Mar 25 08:41:56 UTC 2018]; root of context hierarchy
2018-03-25 08:41:59.516  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello],methods=[GET]}" onto public java.lang.String com.shuqi.controller.HelloController.hello()
2018-03-25 08:41:59.523  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-03-25 08:41:59.524  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-03-25 08:41:59.584  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-03-25 08:41:59.585  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-03-25 08:41:59.645  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-03-25 08:41:59.754  INFO 1 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-03-25 08:41:59.834  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2018-03-25 08:41:59.838  INFO 1 --- [           main] com.shuqi.ApplicationMain                : Started ApplicationMain in 4.084 seconds (JVM running for 5.012)
[2018-03-25 08:41:59] server started!

啟動(dòng)成功台谊。
第三步:輸入docker ps看看容器內(nèi)的8080端口被映射到了本機(jī)的哪個(gè)端口

CONTAINER ID        IMAGE                      COMMAND                  CREATED              STATUS              PORTS                     NAMES
075543f8f5b6        spring-boot-docker-start   "java -jar /spring..."   About a minute ago   Up About a minute   0.0.0.0:32768->8080/tcp   trusting_noether

確定是32768端口蓉媳。
第四步:瀏覽器中輸入http://localhost:32768/hello,看到結(jié)果

image.png

說明我們?cè)L問容器內(nèi)的程序成功了!

下節(jié)將的內(nèi)容是:SpringBoot基礎(chǔ)教程(十七)——與日志的結(jié)合

本節(jié)項(xiàng)目源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锅铅,一起剝皮案震驚了整個(gè)濱河市酪呻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盐须,老刑警劉巖玩荠,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贼邓,居然都是意外死亡阶冈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門塑径,熙熙樓的掌柜王于貴愁眉苦臉地迎上來女坑,“玉大人,你說我怎么就攤上這事统舀√梅桑” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵绑咱,是天一觀的道長(zhǎng)绰筛。 經(jīng)常有香客問我,道長(zhǎng)描融,這世上最難降的妖魔是什么铝噩? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮窿克,結(jié)果婚禮上骏庸,老公的妹妹穿的比我還像新娘。我一直安慰自己年叮,他們只是感情好具被,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著只损,像睡著了一般一姿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跃惫,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天叮叹,我揣著相機(jī)與錄音,去河邊找鬼爆存。 笑死蛉顽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的先较。 我是一名探鬼主播携冤,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悼粮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了曾棕?” 一聲冷哼從身側(cè)響起扣猫,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睁蕾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體债朵,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡子眶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了序芦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臭杰。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谚中,靈堂內(nèi)的尸體忽然破棺而出渴杆,到底是詐尸還是另有隱情,我是刑警寧澤宪塔,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布磁奖,位于F島的核電站,受9級(jí)特大地震影響某筐,放射性物質(zhì)發(fā)生泄漏比搭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一南誊、第九天 我趴在偏房一處隱蔽的房頂上張望身诺。 院中可真熱鬧,春花似錦抄囚、人聲如沸霉赡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穴亏。三九已至,卻和暖如春重挑,著一層夾襖步出監(jiān)牢的瞬間迫肖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工攒驰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟆湖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓玻粪,卻偏偏與公主長(zhǎng)得像隅津,于是被迫代替她去往敵國和親诬垂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容