日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

發布時間:2023/12/3 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不知道各位小伙伴在生產環境都是怎么部署 Spring Boot 的,打成 jar 直接一鍵運行?打成 war 扔到 Tomcat 容器中運行?不過據松哥了解,容器化部署應該是目前的主流方案。

不同于傳統的單體應用,微服務由于服務數量眾多,在部署的時候出問題的可能性更大,這個時候,結合 Docker 來部署,就可以很好的解決這個問題,這也是目前使用較多的方案之一。

將 Spring Boot 項目打包到 Docker 容器中部署,有很多不同的方法,今天松哥主要來和大家聊一聊如何將 Spring Boot 項目一鍵打包到遠程 Docker 容器,然后通過運行一個鏡像的方式來啟動一個 Spring Boot 項目。

至于其他的 Spring Boot 結合 Docker 的用法,大家不要著急,后續的文章,松哥會和大家慢慢的一一道來。

1.準備工作

1.1 準備 Docker

我這里以 CentOS7 為例來給大家演示。

首先需要在 CentOS7 上安裝好 Docker,這個安裝方式網上很多,我就不多說了,我自己去年寫過一個 Docker 入門教程,大家可以在公眾號后臺回復 Docker 獲取教程下載地址。

Docker 安裝成功之后,我們首先需要修改 Docker 配置,開啟允許遠程訪問 Docker 的功能,開啟方式很簡單,修改 /usr/lib/systemd/system/docker.service 文件,加入如下內容:

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

如下圖:

配置完成后,保存退出,然后重啟 Docker:

systemctl daemon-reload
service docker restart

Docker 重啟成功之后,Docker 的準備工作就算是 OK 了。

1.2 準備 IDEA

IDEA 上的準備工作,主要是安裝一個 Docker 插件,點擊 File->Settings->Plugins->Browse Repositories 如下:

點擊右邊綠色的 Install 按鈕,完成安裝,安裝完成之后需要重啟一下 IDEA。

IDEA 重啟成功之后,我們依次打開 File->Settings->Build,Execution,Deployment->Docker ,然后配置一下 Docker 的遠程連接地址:

配置一下 Docker 的地址,配置完成后,可以看到下面有一個 Connection successful 提示,這個表示 Docker 已經連接上了。

如此之后,我們的準備工作就算是 OK 了。

2.準備項目

接下來我們來創建一個簡單的 Spring Boot 項目(只需要引入 spring-boot-starter-web 依賴即可),項目創建成功之后,我們再創建一個普通的 HelloDockerController,用來做測試,如下:

@RestController

這是一個很簡單的接口,無需多說。

3.配置 Dockerfile

接下來,在項目的根目錄下,我創建一個 Dockerfile ,作為我鏡像的構建文件,具體位置如下圖:

文件內容如下:

FROM hub.c.163.com/library/java:latest
VOLUME /tmp
ADD target/docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

這里只有簡單的四行,我說一下:

  • Spring Boot 項目的運行依賴 Java 環境,所以我自己的鏡像基于 Java 鏡像來構建。
  • 考慮到 Docker 官方鏡像下載較慢,我這里使用了網易提供的 Docker 鏡像。
  • 由于 Spring Boot 運行時需要 tmp 目錄,這里數據卷配置一個 /tmp 目錄出來。
  • 將本地 target 目錄中打包好的 .jar 文件復制一份新的 到 /app.jar。
  • 最后就是配置一下啟動命令,由于我打包的 jar 已經成為 app.jar 了,所以啟動命令也是啟動 app.jar。
  • 這是我們配置的一個簡單的 Dockerfile。

    4.配置 Maven 插件

    接下來在 pom.xml 文件中,添加如下插件:

    <plugin>

    這個插件的配置不難理解:

  • 首先在 execution 節點中配置當執行 mvn package 的時候,順便也執行一下 docker:build
  • 然后在 configuration 中分別配置 Docker 的主機地址,鏡像的名稱,鏡像的 tags,其中 dockerDirectory 表示指定 Dockerfile 的位置。
  • 最后 resource 節點中再配置一下 jar 的位置和名稱即可。
  • OK,做完這些我們就算大功告成了。

    5.打包運行

    接下來對項目進行打包,打包完成后,項目會自動構建成一個鏡像,并且上傳到 Docker 容器中,打包方式如下:

    打包過程會稍微有一點舊,因為還包含了鏡像的構建,特別是第一次打包,需要下載基礎鏡像,會更慢一些。

    部分打包日志如下(項目構建過程):

    項目打包成功之后,我們就可以在 Docker 容器中看到我們剛剛打包成的鏡像了,如下:

    5.1 運行方式一

    此時,我們可以直接在 Linux 上像創建普通容器一樣創建這個鏡像的容器,然后啟動,執行如下命令即可:

    docker run -d --name javaboy -p 8080:8080 javaboy/docker:0.0.1

    啟動成功之后,我們就可以訪問容器中的接口了。

    但是這種操作顯然還是有點麻煩,結合我們一開始安裝的 Docker 插件,這個運行步驟還可以做進一步的簡化。

    5.2 運行方式二

    大家注意,此時我們的 IDEA 中多了一個選項,就是 docker,如下:

    點擊左邊的綠色啟動按鈕,連接上 Docker 容器,連接成功之后,我們就可以看到目前 Docker 中的所有容器和鏡像了,當然也包括我們剛剛創建的 Docker 鏡像,如下:

    此時,我們選中這個鏡像,右鍵單擊,即可基于此鏡像創建出一個容器,如下圖:

    我們選擇 Create container,然后填入容器的一些必要信息,配置一下容器名稱,鏡像 ID 會自動填上,暴露的端口使用 Specify 即可,然后寫上端口的映射關系:

    配置完成后,點擊下方的 run 按鈕,就可以開始運行了。運行日志如下:

    注意,這個日志是在 Docker 的那個窗口里打印出來的。

    項目運行成功之后,在瀏覽器輸入遠程服務器的地址,就可以訪問了:

    如此之后,我們的 Spring Boot 項目就算順利發布到遠程 Docker 容器中了。

    好玩嗎?試試!

    本文案例我已經上傳到 GitHub,小伙伴們可以參考:https://github.com/lenve/javaboy-code-samples

    1、Spring Boot2 系列教程(一)純 Java 搭建 SSM 項目

    2、Spring Boot2 系列教程(二)創建 Spring Boot 項目的三種方式

    3、Spring Boot2 系列教程(三)理解 spring-boot-starter-parent

    4、Spring Boot2 系列教程(四)理解配置文件 application.properties !

    5、Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置

    6、Spring Boot2 系列教程(六)自定義 Spring Boot 中的 starter7、Spring Boot2 系列教程(七)理解自動化配置的原理

    8、Spring Boot2 系列教程(八)Spring Boot 中配置 Https

    9、Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf

    10、Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    11、Spring Boot2 系列教程(十一)Spring Boot 中的靜態資源配置

    12、Spring Boot2 系列教程(十二)@ControllerAdvice 的三種使用場景

    13、Spring Boot2 系列教程(十三)Spring Boot 中的全局異常處理

    14、Spring Boot2 系列教程(十四)CORS 解決跨域問題

    15、Spring Boot2 系列教程(十五)定義系統啟動任務的兩種方式

    16、Spring Boot2 系列教程(十六)定時任務的兩種實現方式

    17、Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2

    18、Spring Boot2 系列教程(十八)Spring Boot 中自定義 SpringMVC 配置

    19、Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate

    20、Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多數據源

    21、Spring Boot2 系列教程(二十一)整合 MyBatis

    22、Spring Boot2 系列教程(二十二)整合 MyBatis 多數據源

    23、Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

    26、Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis

    27、Spring Boot2 系列教程(二十七)Nginx 極簡掃盲入門

    28、Spring Boot2 系列教程(二十八)Spring Boot 整合 Session 共享

    29、Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis

    30、Spring Boot2 系列教程(三十)Spring Boot 整合 Ehcache

    31、Spring Boot2 系列教程(三十一)Spring Boot 構建 RESTful 風格應用

    32、Spring Boot2 系列教程(三十二)Spring Boot 整合 Shiro

    33、Spring Boot2 系列教程(三十三)整合 Spring Security

    34、Spring Boot2 系列教程(三十四)Spring Security 添加驗證碼

    35、Spring Boot2 系列教程(三十五)SpringSecurity 使用 JSON 格式登錄

    36、Spring Boot2 系列教程(三十六)SpringSecurity 中角色繼承的坑

    37、Spring Boot2 系列教程(三十七)Spring Security 整合 JWT

    38、Spring Boot2 系列教程(三十八)Spring Security 非法請求直接返回 JSON

    39、Spring Boot2 系列教程(三十九)Spring Boot 熱部署

    40、Spring Boot2 系列教程(四十)Spring Boot 可執行 jar 分析

    喜歡就點個"在看"唄^_^

    總結

    以上是生活随笔為你收集整理的docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。