Spring Boot 2 實戰:結合 Docker 容器化

docker&spring.png

1. 前言

Docker 是啥?好處是啥? 什麼如今若是做爲一名開發你還不知道甚至沒有用過我都感受你落伍了。Docker 是一種虛擬化的容器技術,目的爲了打造持續集成、版本控制、可移植性、隔離性和安全性的應用集成。這都是官話。其實我認爲最簡單的理解就是 Docker 能給你的應用打造一套隔離的應用環境。只要能跑docker的環境,無論是Linux,仍是 Mac,仍是 windows 都能快速把你的應用部署過來甚至達到秒級啓動。若是你有個Mysql集羣鏡像,你瞬間就能啓動一個 Mysql 集羣,若是讓你用手擼一個估計得一袋煙的工夫。看到這裏若是沒用過 Docker,趕忙找資料學習去,並不難學。
別忘記關注一下,回來接着下面的乾貨分享。 那麼今天我將如何將 Spring Boot 應用容器化。java

2. 環境

  • Spring Boot 版本2.2.0.RELEASE
  • Jdk 版本 java 8 這裏能夠選擇 openjdk8 或者 oracle jdk8
  • Docker 環境本身能夠選擇 LinuxMac或者Win10專業版 沒有太多區別
  • 開發工具 Idea 2019 旗艦版

3. Spring Boot 應用

經過 Idea 搭建一個簡單的名稱爲docker-springboot 的 springboot web maven應用。 並編寫一個 Spring MVC 接口。web

gz5v1D.jpg

接下來咱們要把spring boot打包成可執行jarspring

gz53bv.jpg

點擊上圖的 package 或者熟悉 Maven的用高逼格命令行操做 mvn clean package 編譯好後會在 target 目錄下找到一個打包好的 jar 文件。sql

4. 編寫 Docker 腳本

下來該編寫 Docker 建立鏡像的打包腳本,名稱必須是 Dockerfile,位置爲項目根目錄,還有經過 Maven 插件來操做位置不盡相同。內容以下docker

# 使用aws 的 openjdk8
  FROM amazoncorretto:8
  # 做者署名   
  MAINTAINER Felordcn
  # 掛載的容器磁盤
  VOLUME ["/tmp"]
  # 使用東八區時間 環境 其餘環境參數也能夠經過ENV 聲明
  ENV TZ=Asia/Shanghai
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  #  add 命令是 將主機構建環境(上下文)目錄中的文件和目錄、以及一個URL標記的文件 拷貝到鏡像中
  ADD /target/docker-springboot-0.0.1-SNAPSHOT.jar app.jar
  # 暴露端口 跟springboot 默認應用端口同樣
  EXPOSE 8080
  #  啓動鏡像就執行的命令操做   至關於執行  java -jar  app.jar  -Djava.security.egd=file:/dev/./urandom     最後的指令是爲了加快啓動
  ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

5. 構建鏡像

而後在項目目錄下打開命令行工具(idea 自帶有)執行腳本(記得啓動docker)不要忘記最後的點 表明當前路徑 其餘路徑 寫相對路徑windows

docker build -t docker-springboot:0.0.1 .

而後進入分層構建階段 走到最後鏡像就成了以下安全

gz5NKi.jpg

6. 啓動容器

命令行 執行 docker images 查看一下是否存在 一個 docker-springboot:0.0.1 的鏡像,只要結果跟上圖同樣就必定存在。而後從鏡像啓動一個容器,命令行以下springboot

docker run --name docker-app -p 8088:8080 docker-springboot:0.0.1

該命令的意思是 我前臺從 docker-springboot:0.0.1 鏡像啓動一個名字叫 docker-app的容器應用,同時將容器內部端口8080映射到宿主機端口8088 ,這樣咱們能夠經過本地端口8088訪問容器端口8080 。而後你訪問上面寫好的那個接口 http://localhost:8088/docker/hellooracle

gz5bhW.jpg

大功告成。 這樣咱們就簡單的實現了 Spring Boot 應用的容器化app

7. 總結

應用容器化是近年來的熱點。並且容器技術層出不窮,掌握應用的容器化技術仍是頗有必要的。今天咱們一步一步從零利用 Docker 構建了一個 Spring Boot 容器 。但願對你有所幫助。

關注公衆號:Felordcn獲取更多資訊

我的博客:https://felord.cn

相關文章
相關標籤/搜索