在Mac上使用Docker部署Spring Boot項(xiàng)目

Docker技術(shù)發(fā)展為微服務(wù)提供便利環(huán)境,使用Docker部署Spring Boot項(xiàng)目是簡單易操作。步驟如下:

一.安裝Docker

在Docker Store下載Mac版本,鏈接如下:

https://store.docker.com/editions/community/docker-ce-desktop-mac

安裝成功,在頂部的菜單欄出現(xiàn)如下圖標(biāo):
圖1

二、搭建Spring Boot項(xiàng)目

在網(wǎng)上有很多文章說明怎樣搭建Spring Boot項(xiàng)目,在這里不詳細(xì)說了,請自行查找相關(guān)資料哦。

在演示Spring boot項(xiàng)目例子,添加DemoController,代碼如下:

package com.gloria.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class DemoController {

    @ResponseBody
    @RequestMapping(value="")
    public String heloWord() {
        return "HelloWord";
    }
}

添加后啟動Spring Boot項(xiàng)目,啟動成功后使用瀏覽器訪問http://localhost:8080/,在頁面看到打印:

HelloWorld

圖2

三、Spring Boot 項(xiàng)目添加 Docker 支持

  1. pom.xml的properties中添加Docker鏡像名稱,如下所示
   <properties>
   ?        <docker.image.prefix>springboot</docker.image.prefix>
   </properties>
  1. 在pom.xml的plugins添加構(gòu)建Docker插件
   ?<build>
   ?    <plugins>
   ?        <plugin>
   ?            <groupId>org.springframework.boot</groupId>
   ?            <artifactId>spring-boot-maven-plugin</artifactId>
   ?        </plugin>
   ?        <!-- Docker maven plugin -->
   ?        <plugin>
                 <groupId>com.spotify</groupId>
   ?              <artifactId>docker-maven-plugin</artifactId>
   ?              <version>0.4.13</version>
   ?              <configuration>
   ?                  <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
   ?                  <dockerDirectory>src/main/docker</dockerDirectory>
   ?                  <resources>
   ?                        <resource>
   ?                            <targetPath>/</targetPath>
   ?                            <directory>${project.build.directory}</directory>
   ?                            <include>${project.build.finalName}.jar</include>
   ?                        </resource>
   ?                  </resources>
   ?              </configuration>
   ?          </plugin>
   ?    </plugins>
   ?</build>

四、創(chuàng)建Dockerfile文件

src/main/docker目錄下創(chuàng)建Dockerfile文件

FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  • FROM 表示要構(gòu)建的鏡像基于哪個鏡像,java:8表示使用jdk8環(huán)境為基礎(chǔ)鏡像
  • EXPOSE 告訴Docker這個容器在運(yùn)行時會監(jiān)聽哪些端口。
  • VOLUME 指向了一個/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個命令的效果是:在宿主機(jī)的/var/lib/docker目錄下創(chuàng)建一個臨時文件并把它鏈接到容器中的/tmp目錄
  • ADD 表示把文件拷入docker ,并改名成 app.jar
  • ENTRYPOINT 表示使用指定命令在鏡像運(yùn)行時執(zhí)行,啟動jar。

五、構(gòu)建鏡像

  1. 測試打的jar是否正常

    在 Terminal終端進(jìn)入項(xiàng)目路徑,輸入如下命令:
    mvn package

    啟動項(xiàng)目
    java -jar demo-0.0.1-SNAPSHOT.jar

看到 Spring Boot 的啟動日志后,在瀏覽器訪問http://localhost:8080/,在頁面看到打印

HelloWorld

表明環(huán)境配置沒有問題。

  1. 構(gòu)建鏡像

    使用Dockerfileg構(gòu)建鏡像,進(jìn)入項(xiàng)目目錄執(zhí)行如下命令:

    mvn package docker:build

    第一次會啟動慢一些,如果看到如下信息說明構(gòu)建鏡像成功:

    圖3
  2. 使用 docker images 命令查看構(gòu)建好鏡像

    圖4

    六、運(yùn)行鏡像

    1. 運(yùn)行鏡像

    springboot/demo是我們構(gòu)建好的鏡像,運(yùn)行鏡像命令:

    docker run -p 8080:8080 -t springboot/demo

  1. 查看正在運(yùn)行鏡像

使用docker ps 查看正在運(yùn)行的鏡像:

圖5

可以看到我們構(gòu)建的容器正在運(yùn)行,使用瀏覽器訪問:http://localhost:8080/,返回:
Hello World

  1. 停止鏡像
    使用docker stop CONTAINER ID 停止鏡像,上圖所示CONTAINER ID是:6d2f2ddf460c,所以停止鏡像命令:

    docker stop 6d2f2ddf460c


?

使用docker部署Spring Boot項(xiàng)目是比較簡單。如果哪里寫得不合理,請指正哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2018年1月16日,我從來京的第四份崗位上離職。到現(xiàn)在已近兩個月了,這期間經(jīng)歷了多番的晚上頭腦發(fā)熱,白天消極墮落...
    冬天腳冰涼閱讀 3,643評論 0 1
  • 考試過后聚個餐
    201閱讀 295評論 0 0
  • 每天碎片化的時間很多,現(xiàn)在都在“微信讀書”上看書,或者是聽“得到”的有趣資訊。 往往聽到的時候,都有很多啟發(fā),但是...
    小Q成長隨手記閱讀 342評論 0 0
  • 任何一件小事只要你不斷地堅(jiān)持去做,在某種意義上它就不只是小事那么簡單了。
    金剛蝦閱讀 205評論 0 0

友情鏈接更多精彩內(nèi)容