天天看點

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

1 概述

本文講述了如何使用

Docker

部署

Spring Boot

應用,首先介紹了

Docker

的安裝過程,接着介紹了

Docker

的一些基礎知識,最後講述了

Dockerfile

的編寫以及部署過程。

2 環境

  • Docker 20.10.14

3

Docker

安裝

由于大部分的教程都是針對

x86

架構的伺服器的,這裡筆者的伺服器為

aarch64

架構,是以記錄一下

Docker

的安裝過程。

Docker

安裝方法主要有兩種,一種是通過官網的腳本自動安裝,一種是通過

yum

手動安裝。

3.1 自動安裝

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
           

預設安裝的是最新版本的,

x86

的一般都可以,但如果出現像筆者這樣的錯誤:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

表明

containerd.io

的版本過低,使用

yum install containerd.io

安裝的話:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

可以看到是

1.2.0

版本,并不符合安裝的最低要求,解決這種問題有兩個辦法:

  • 手動下載下傳

    rpm

    包安裝
  • 安裝沒那麼新版本的

    Docker

是以采用手動安裝的方法,這裡選擇的是第一種方法,手動下載下傳

rpm

包進行安裝。

3.2 手動安裝

3.2.1 下載下傳

rpm

可以戳這裡下載下傳

rpm

包:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

選擇好版本即可,筆者選擇的是:

  • containerd.io-1.2.13-3.2.el7.aarch64.rpm

  • docker-ce-19.03.9-3.el7.aarch64.rpm

  • docker-ce-cli-19.03.9-3.el7.aarch64.rpm

3.2.2 安裝

上傳到伺服器後,安裝即可:

yum install \
containerd.io-1.2.13-3.2.el7.aarch64.rpm \
docker-ce-19.03.9-3.el7.aarch64.rpm \
docker-ce-cli-19.03.9-3.el7.aarch64.rpm \
-y
           

3.3 測試

先開啟服務:

版本檢視:

docker version
           
Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

運作

Hello World

docker run hello-world
           
Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

4 打包

建立一個

Demo

工程,增加一個

Controller

@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "success";
    }
}
           

接着使用

Maven

/

Gradle

打成

JAR

包:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼
Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

5

Dockerfile

5.1 關于

Dockerfile

Dockerfile

是一個用于組合鏡像的文本檔案,

Docker

通過讀取

Dockerfile

的内容自動生成鏡像,一般分為四部分:

  • 基礎鏡像資訊
  • 維護者資訊
  • 鏡像操作指令
  • 容器啟動指令

更多的内容請參考其他部落格或者官網,下面給出一個

Demo

5.2

Dockerfile

示例

Demo

采用的

Dockerfile

如下:

FROM adoptopenjdk/openjdk11:aarch64-centos-jdk-11.0.8_10

MAINTAINER XXXXX <[email protected]>

VOLUME /tmp

EXPOSE 8080

ADD demo.jar demo.jar

ENTRYPOINT ["java","-jar","demo.jar"]
           

下面逐行進行詳細說明。

5.2.1 指定基礎鏡像

FROM adoptopenjdk/openjdk11:aarch64-centos-jdk-11.0.8_10
           

該指令指定基礎鏡像,

adopt

aarch64

架構的

JDK11

,注意如果伺服器架構為

x86

需要對應修改,具體可以戳這裡檢視:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

5.2.2 維護者

該指令指定了維護者的資訊,可以隻寫名字或者隻寫郵箱,組合的話需要加上

<>

5.2.3 持久化目錄

VOLUME /tmp
           

該指令指定了持久化目錄,準确來說,

volume

的意思,這是指定

的位置,一般來說如果需要資料持久化則需要資料卷。

5.2.4 暴露端口

該指令暴露的是

8080

端口,因為

Spring Boot

應用預設運作在

8080

上,如果修改了

application.yaml

或者

application.properties

請對應修改端口。

5.2.5 添加指令

ADD demo.jar demo.jar
           

将本地檔案添加到容器中,

tar

類型檔案會自動解壓,這裡是将

demo.jar

添加

5.2.6 運作容器

該指令用于配置容器的運作指令。

6 制作鏡像

6.1 基本操作

先說一下容器的基本操作:

  • docker run

    :建立一個新容器并運作
  • docker start/stop/restart

    :啟動/停止/重新開機容器
  • docker rm

    :删除容器
  • docker create

    :建立容器但不啟動
  • docker ps

    :列出容器

鏡像基本操作:

  • docker build

    :建立鏡像
  • docker rmi

    :删除鏡像
  • docker images

    :列出鏡像

這裡簡單說一下鏡像和容器的差別:

  • 鏡像相當于一個模闆,可以從一個鏡像建立出多個容器
  • 用面向對象的思想比如,就是,鏡像相當于一個類,而容器相當于一個類執行個體,也就是對象

知道了一些基礎指令後就可以來制作鏡像了。

6.2 建立鏡像

上傳

Dockerfile

以及

JAR

包,建立一個目錄把

JAR

以及

Dockerfile

放在同一個檔案夾下,并進入該檔案夾,接着建立鏡像:

建立完成後可以檢視鏡像:

docker images
           

6.3 運作

docker run -d -p 8888:8080 demo
           

該指令表示從鏡像

demo

建立一個容器并運作,将

8080

端口映射到

8888

端口上,主要防火牆需要開啟

8888

端口,伺服器記得配置安全組。

6.4 測試

直接輸入

ip:端口/test

即可通路:

Spring Boot demo系列(四):Docker部署1 概述2 環境3 Docker安裝4 打包5 Dockerfile6 制作鏡像7 源碼

7 源碼

Java

版:

  • Github
  • 碼雲
  • GitCode

Kotlin

版:

  • Github
  • 碼雲
  • GitCode

繼續閱讀