使用Docker部署第一個(gè)Springboot項(xiàng)目

前面介紹了docker到底是什么? 還有如何在centos中安裝docker蛋褥。那么現(xiàn)在讓我們自己來(lái)實(shí)戰(zhàn)一下彼宠,如何在docker上部署自己第一個(gè)項(xiàng)目。在之后會(huì)有詳細(xì)介紹docker命令和具體應(yīng)用的筆記

創(chuàng)建一個(gè)Springboot程序

1.初始化項(xiàng)目

我們打開(kāi) spring官方提供的初始化springboot項(xiàng)目頁(yè)面 Spring Initializr诗力。Dependencies選擇web就可以了凰浮,項(xiàng)目如圖:

spring-initialize.png
2.使用IDEA或者ecplipse導(dǎo)入,我這里使用的是IDEA苇本。

將pom.xml文件修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.docker.example</groupId>
   <artifactId>demo</artifactId>
   <version>docker</version>
   <name>demo</name>
   <description>Demo project for Spring Boot</description>
   <packaging>jar</packaging>

   <properties>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>
3.修改application.properties 文件

自定義請(qǐng)求路徑

server.servlet.context-path=/test
4.創(chuàng)建測(cè)試controller
package com.docker.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName DockerTestController
 * @Description docker-demo簡(jiǎn)單的controller
 * @Author Neal
 * @Date 2019/2/21 18:38
 * @Version 1.0
 */
@RestController
public class DockerTestController {

    @GetMapping("/docker")
    public String dockerTest() {
        return "hello docker";
    }
}
5.最終項(xiàng)目目錄
demo.png
6.使用IDEA啟動(dòng)袜茧,測(cè)試項(xiàng)目是否部署成功。
ideastart.png

請(qǐng)求本地路徑瓣窄,查看返回結(jié)果

ideatest.png

我們看到項(xiàng)目沒(méi)什么問(wèn)題笛厦,那么現(xiàn)在讓我們把springboot程序打包,打成jar包即可俺夕。

7.打包

這里我使用IDEA中的MAVEN插件打包裳凸,非常簡(jiǎn)單快捷,但是就是需要走一遍測(cè)試劝贸。步驟如下:

maven.png

雙擊package即可登舞,最后只要等待控制臺(tái)輸出SUCCESS即可。

success.png

我們會(huì)在項(xiàng)目中的dockertest\demo\target\demo-docker.jar 路徑中看到自己打包的jar悬荣。

demojar.png

使用Docker部署(linux)

我這里使用的是自己的阿里云服務(wù)器菠秒,如果有本地虛擬機(jī)使用的centos系統(tǒng)也可以,這個(gè)大家可以自行選擇。

1.把jar包放到固定目錄下

我的目錄是 /home/docker/docker-demo

2.創(chuàng)建Dockerfile 文件

使用vim Dockerfile 命令創(chuàng)建文件并將以下內(nèi)容copy進(jìn)你自己的Dockerfile文件中践叠。

#獲取base image
FROM adoptopenjdk/openjdk8:latest 
#類(lèi)似于執(zhí)行 linux指令
RUN mkdir /opt/app  
#類(lèi)似于linux copy指令
COPY demo-docker.jar /opt/app/       
#對(duì)外端口
EXPOSE 8080
#執(zhí)行命令 java -jar /opt/app/demo-docker.jar
CMD ["java", "-jar", "/opt/app/demo-docker.jar"] 

可能有同學(xué)會(huì)問(wèn) 這命令是干什么的言缤,稍后會(huì)有文章單獨(dú)介紹。我們今天主要是實(shí)現(xiàn)docker部署一個(gè)springboot項(xiàng)目禁灼。

copy復(fù)制完后管挟,按ESC并輸入 :wq保存文件。

3.在當(dāng)前路徑輸入命令 ls 如果出現(xiàn)以下輸出弄捕,表示正確僻孝。
ls.png
4.創(chuàng)建docker 鏡像。
sudo docker build -t docker-demo .

這里稍微解釋一下 build 是創(chuàng)建命令 守谓,-t 是指定target 名稱穿铆, docker-demo 就是鏡像名稱 ,. 指的是在當(dāng)前目錄下 尋找 Dockerfile文件。

執(zhí)行以上指令斋荞,如果打印輸出如下荞雏,表示創(chuàng)建成功。

image_success.png
5.查看當(dāng)前鏡像列表
image-list.png
6.生成container

執(zhí)行以下命令

docker run -it -p 8080:8080 docker-demo

這里也稍微做一下解釋 run 運(yùn)行鏡像 -it以交互模式運(yùn)行容器并為容器重新分配一個(gè)偽輸入終端 -p 端口映射平酿,格式為:主機(jī)(宿主)端口:容器端口 凤优。 最后的就是我們剛剛創(chuàng)建的鏡像名稱。

如果輸出以下內(nèi)容蜈彼,表示部署基本成功筑辨。


container_output.png
7.檢測(cè)部署是否成功

這里我使用的是我自己阿里云服務(wù)器上的公網(wǎng)IP,大家可以選擇自己的對(duì)外IP進(jìn)行測(cè)試幸逆。我這里使用的是chrome瀏覽器挖垛。

docker測(cè)試.png

總結(jié)

一個(gè)簡(jiǎn)單的Springboot項(xiàng)目,已經(jīng)使用docker部署完了秉颗。在部署這個(gè)小項(xiàng)目的時(shí)候,自己做過(guò)很多測(cè)試送矩,包括基礎(chǔ)鏡像的創(chuàng)建蚕甥,Dockerfile的調(diào)試等,如果各位對(duì)docker感興趣栋荸,可以使用 play with docker 來(lái)熟悉或者練習(xí)菇怀,具體怎么使用可以自行百度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晌块,一起剝皮案震驚了整個(gè)濱河市爱沟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匆背,老刑警劉巖呼伸,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡括享,警方通過(guò)查閱死者的電腦和手機(jī)搂根,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铃辖,“玉大人剩愧,你說(shuō)我怎么就攤上這事〗空叮” “怎么了仁卷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)犬第。 經(jīng)常有香客問(wèn)我锦积,道長(zhǎng),這世上最難降的妖魔是什么瓶殃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任充包,我火速辦了婚禮,結(jié)果婚禮上遥椿,老公的妹妹穿的比我還像新娘基矮。我一直安慰自己,他們只是感情好冠场,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布家浇。 她就那樣靜靜地躺著,像睡著了一般碴裙。 火紅的嫁衣襯著肌膚如雪钢悲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天舔株,我揣著相機(jī)與錄音莺琳,去河邊找鬼。 笑死载慈,一個(gè)胖子當(dāng)著我的面吹牛惭等,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播办铡,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辞做,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了寡具?” 一聲冷哼從身側(cè)響起秤茅,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎童叠,沒(méi)想到半個(gè)月后框喳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搁骑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年巫糙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了开缎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片例隆。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柑潦,死狀恐怖秉撇,靈堂內(nèi)的尸體忽然破棺而出针肥,到底是詐尸還是另有隱情书幕,我是刑警寧澤匙监,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布凡橱,位于F島的核電站,受9級(jí)特大地震影響亭姥,放射性物質(zhì)發(fā)生泄漏稼钩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一达罗、第九天 我趴在偏房一處隱蔽的房頂上張望坝撑。 院中可真熱鬧,春花似錦粮揉、人聲如沸巡李。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侨拦。三九已至,卻和暖如春辐宾,著一層夾襖步出監(jiān)牢的瞬間狱从,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工叠纹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留季研,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓誉察,卻偏偏與公主長(zhǎng)得像与涡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冒窍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,532評(píng)論 15 147
  • Docker 基礎(chǔ)介紹與微服務(wù)應(yīng)用 Docker簡(jiǎn)介 Docker是一個(gè)開(kāi)源的容器引擎豺鼻,它有助于更快地交付應(yīng)用综液。 ...
    掛機(jī)的啊洋zzZ閱讀 1,385評(píng)論 2 12
  • 雖然知道如何部署war包到服務(wù)器上了,但是docker這么火儒飒,不學(xué)習(xí)學(xué)習(xí)裝裝逼怎么行呢谬莹,今天就來(lái)嘗嘗鮮。 注:阿里...
    云師兄閱讀 1,106評(píng)論 1 6
  • 說(shuō)到CI(持續(xù)集成)也許你腦子里馬上會(huì)蹦出一個(gè)著名的CI工具,就是我們本篇實(shí)踐記錄中的jenkins附帽。 沒(méi)錯(cuò)埠戳,je...
    wendell_dev閱讀 7,528評(píng)論 0 31
  • 泡泡明月山的溫泉,放松身體和心情蕉扮,非常舒服整胃,泡完后,感覺(jué)所有的疲勞喳钟、身體的疼痛和精神的煩惱都消失的無(wú)蹤無(wú)影屁使。...
    洋MoM閱讀 251評(píng)論 2 0