最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Docker實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行的操作方法

 更新時(shí)間:2022年10月17日 16:43:45   作者:微楓Micromaple  
本文講解的是 SpringBoot 引入容器化技術(shù) Docker 實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行,包括鏡像構(gòu)建、Docker倉(cāng)庫(kù)搭建使用、Docker倉(cāng)庫(kù)可視化UI等內(nèi)容,需要的朋友可以參考下

寫(xiě)在前面

本文講解的是 SpringBoot 引入容器化技術(shù) Docker 實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行,包括鏡像構(gòu)建、Docker倉(cāng)庫(kù)搭建使用、Docker倉(cāng)庫(kù)可視化UI等內(nèi)容。

PS:如果你是新手,可以跟著系列專(zhuān)欄的框架搭建先動(dòng)手把項(xiàng)目搭建起來(lái),然后在結(jié)合本期內(nèi)容繼續(xù)深入學(xué)習(xí),這樣會(huì)有更好的效果。

一、容器化部署的好處

Docker 作為一種新興的虛擬化方式,它可以更高效的利用系統(tǒng)資源,不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開(kāi)銷(xiāo)。

傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用,由于直接運(yùn)行宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)、甚至毫秒級(jí)的啟動(dòng)時(shí)間。大大的節(jié)約了開(kāi)發(fā)、測(cè)試、部署的時(shí)間。

最重要的是一致的運(yùn)行環(huán)境。 Docker 的鏡像提供了除內(nèi)核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性。從而達(dá)到真正意義上的 一次構(gòu)建,到處執(zhí)行。

二、構(gòu)建鏡像

2.1、Dockerfile

接著我們開(kāi)始使用 Dockerfile 來(lái)定制我們的鏡像,從而達(dá)到容器化的目的。Dockerfile 的本質(zhì)就是將一系列修改、安裝、構(gòu)建、操作的命令整合到一起,去構(gòu)建一個(gè)個(gè)性化的鏡像,以達(dá)到**一次構(gòu)建,到處運(yùn)行。**接下來(lái)我們就來(lái)構(gòu)建自定義鏡像。

my-project-server模塊下創(chuàng)建docker目錄,在docker目錄下創(chuàng)建Dockerfile。代碼如下:

FROM openjdk:8-jre

MAINTAINER Micromaple <micromaple@qq.com>

RUN mkdir /app

COPY my-project-server-1.0.0-SNAPSHOT.jar /app/app.jar

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod,druid-prod"]

EXPOSE 8899
  • FROM:指定基礎(chǔ)鏡像,項(xiàng)目是使用jdk8開(kāi)發(fā)的項(xiàng)目,所以我們指定的基礎(chǔ)鏡像為openjdk:8-jre
  • MAINTAINER:項(xiàng)目維護(hù)人員
  • RUN:執(zhí)行命令,在根目錄下創(chuàng)建app目錄
  • COPY:將宿主機(jī)當(dāng)前目錄下的my-project-server-1.0.0-SNAPSHOT.jar文件拷貝到app目錄下,并重命名為app.jar
  • ENTRYPOINT:指定容器啟動(dòng)程序及參數(shù)
  • EXPOSE:指定運(yùn)行時(shí)容器提供服務(wù)的端口

2.2、開(kāi)始構(gòu)建

在虛擬機(jī)創(chuàng)建目錄

mkdir -p /usr/local/docker/my-project/docker

將打包后的my-project-server-1.0.0-SNAPSHOT.jar文件和Dockerfile文件上傳至該目錄。

執(zhí)行鏡像構(gòu)建命令

docker build -t my-project-server:v1 .

構(gòu)建成功

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-project-server   v1                  ed30386b06d2        11 seconds ago      334MB
openjdk             8-jre               26ac3f63d29f        9 months ago        273MB

三、搭建私服

3.1、搭建 Docker Registry

創(chuàng)建目錄

mkdir -p /usr/local/docker/registry

在該目錄下創(chuàng)建Docker Registrydocker-compose.yml。內(nèi)容如下:

cd /usr/local/docker/registry
version: '3.1'
services:
  registry:
    image: registry
    restart: always
    container_name: registry
    ports:
      - 5000:5000
    volumes:
      - ./data:/var/lib/registry

啟動(dòng)容器

docker-compose up -d

3.2、搭建 Docker Registry WebUI

創(chuàng)建目錄

mkdir -p /usr/local/docker/docker-registry-frontend

在該目錄下創(chuàng)建Docker Registrydocker-compose.yml。內(nèi)容如下:

cd /usr/local/docker/docker-registry-frontend
version: '3.1'
services:
  frontend:
    image: konradkleine/docker-registry-frontend:v2
    ports:
      - 8080:80
    volumes:
      - ./certs/frontend.crt:/etc/apache2/server.crt:ro
      - ./certs/frontend.key:/etc/apache2/server.key:ro
    environment:
      - ENV_DOCKER_REGISTRY_HOST=192.168.110.158(Docker倉(cāng)庫(kù)的IP)
      - ENV_DOCKER_REGISTRY_PORT=5000

需要將ENV_DOCKER_REGISTRY_HOST的值更改為自己搭建的 DockerRegistry 服務(wù)的IP

啟動(dòng)容器

docker-compose up -d

瀏覽器訪問(wèn)http://192.168.110.158:8080/,效果如下:

3.3、客戶(hù)端配置

在需要上傳 Docker 鏡像的客戶(hù)端需配置daemon.json,完整路徑在 /etc/docker/daemon.json

vi /etc/docker/daemon.json

需增加如下內(nèi)容:

"insecure-registries": [
  "Docker倉(cāng)庫(kù)的IP:5000"
]

完整daemon.json內(nèi)容:

{
  "registry-mirrors": [
    "https://xxx.mirror.aliyuncs.com"
  ],
  "insecure-registries": [
    "192.168.110.158:5000"
  ]
}
  • registry-mirrors:為鏡像加速地址,這里為我自己申請(qǐng)的加速地址。大家可以自己申請(qǐng)一個(gè),也可以在網(wǎng)上找一個(gè)。
  • insecure-registries:Docker倉(cāng)庫(kù)的IP。

重新啟動(dòng)服務(wù)

systemctl daemon-reload
systemctl restart docker

3.4、上傳私服

搭建以及配置完成后,需要將我們之前構(gòu)建的鏡像上傳至我們自己的Docker倉(cāng)庫(kù)。

查看鏡像

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-project-server   v1                  6af7d633afb7        5 seconds ago       334MB
openjdk             8-jre               26ac3f63d29f        9 months ago        273MB

1)、鏡像標(biāo)記

使用 docker tagmy-project-server:v1 這個(gè)鏡像標(biāo)記為 192.168.110.158:5000/my-project-server:v1。

192.168.110.158為我的Docker倉(cāng)庫(kù)的IP。

格式為:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

命令如下:

docker tag my-project-server:v1 192.168.110.158:5000/my-project-server:v1

標(biāo)記后,查看鏡像

$ docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
192.168.110.158:5000/my-project-server   v1                  6af7d633afb7        3 minutes ago       334MB
my-project-server                        v1                  6af7d633afb7        3 minutes ago       334MB
openjdk                                  8-jre               26ac3f63d29f        9 months ago        273MB

2)、鏡像上傳

使用 docker push 上傳鏡像。

$ docker push 192.168.110.158:5000/my-project-server
The push refers to repository [192.168.110.158:5000/my-project-server]
5b9e874b9f9c: Pushed 
e87c042d22f8: Pushed 
b4cfcb8385a8: Pushed 
2b730cf18c09: Pushed 
edeaba958753: Pushed 
8bf42db0de72: Pushed 
31892cc314cb: Pushed 
11936051f93b: Pushed 
v1: digest: sha256:5c8a0efff409649a389d0bc74dda94ca96e67e87c92673b4c7dad0078657af40 size: 2000

3)、查看鏡像

使用 curl 查看 192.168.110.158:5000/v2/_catalog 地址,可以看到上傳成功的鏡像

$ curl 192.168.110.158:5000/v2/_catalog
{"repositories":["my-project-server"]}

這里我們可以成功的看到我們上傳的鏡像。

我們也可以在我們剛剛搭建的WebUI上可視化的查看我們的鏡像。效果圖如下:

4)、驗(yàn)證

此時(shí)我們將本地鏡像刪除,嘗試從私有倉(cāng)庫(kù)下載這個(gè)鏡像

先刪除已有鏡像

docker rmi my-project-server:v1 192.168.110.158:5000/my-project-server:v1

下載鏡像

docker pull 192.168.110.158:5000/my-project-server:v1
$ docker pull 192.168.110.158:5000/my-project-server:v1
v1: Pulling from my-project-server
0e29546d541c: Already exists 
9b829c73b52b: Already exists 
cb5b7ae36172: Already exists 
99ce012bef04: Already exists 
22dc2a72d098: Already exists 
9c69a57e10d9: Already exists 
776f54050ab5: Pull complete 
65a83a9a7871: Pull complete 
Digest: sha256:5c8a0efff409649a389d0bc74dda94ca96e67e87c92673b4c7dad0078657af40
Status: Downloaded newer image for 192.168.110.158:5000/my-project-server:v1
192.168.110.158:5000/my-project-server:v1
$ docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
192.168.110.158:5000/my-project-server   v1                  6af7d633afb7        15 minutes ago      334MB
openjdk                                  8-jre               26ac3f63d29f        9 months ago        273MB

我們可以看到可以正常拉取。

四、容器啟動(dòng)

鏡像構(gòu)建并上傳至完成后,可以直接使用Docker Compose來(lái)啟動(dòng)容器。實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行。

創(chuàng)建目錄

mkdir -p /usr/local/docker/my-project

在該目錄下創(chuàng)建Docker Registrydocker-compose.yml。內(nèi)容如下:

cd /usr/local/docker/my-project
version: '3.1'
services:
  my_project_server:
    image: 192.168.110.158:5000/my-project-server:v1
    container_name: my-project-server
    restart: always
    ports:
      - 8899:8899
    volumes:
      - ./logs:/logs
    environment:
      TZ: Asia/Shanghai

啟動(dòng)容器

docker-compose up -d

查看容器啟動(dòng)狀態(tài)

docker ps -a

訪問(wèn)查詢(xún)所有用戶(hù)接口

http://ip:8899/sys-user/get/all

到此這篇關(guān)于SpringBoot整合Docker實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行的文章就介紹到這了,更多相關(guān)SpringBoot整合Docker內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java編程基礎(chǔ)測(cè)試題分享

    Java編程基礎(chǔ)測(cè)試題分享

    這篇文章主要介紹了Java編程基礎(chǔ)測(cè)試題分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • jdk21安裝后無(wú)jre文件該如何解決

    jdk21安裝后無(wú)jre文件該如何解決

    java開(kāi)發(fā)少不了安裝jdk,下面這篇文章主要給大家介紹了關(guān)于jdk21安裝后無(wú)jre文件該如何解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別

    Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別

    這篇文章主要介紹了Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別,文章介紹詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Java通過(guò)jersey實(shí)現(xiàn)客戶(hù)端圖片上傳示例

    Java通過(guò)jersey實(shí)現(xiàn)客戶(hù)端圖片上傳示例

    本篇文章主要介紹了Java通過(guò)jersey實(shí)現(xiàn)客戶(hù)端圖片上傳示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • java中對(duì)list分頁(yè)并顯示數(shù)據(jù)到頁(yè)面實(shí)例代碼

    java中對(duì)list分頁(yè)并顯示數(shù)據(jù)到頁(yè)面實(shí)例代碼

    這篇文章主要介紹了java中對(duì)list分頁(yè)并顯示數(shù)據(jù)到頁(yè)面實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java如何判斷一個(gè)空對(duì)象的常見(jiàn)方法

    Java如何判斷一個(gè)空對(duì)象的常見(jiàn)方法

    在Java中判斷對(duì)象是否為空是一項(xiàng)重要的編程技巧,可以有效防止空指針異常的發(fā)生,下面這篇文章主要給大家介紹了關(guān)于利用Java如何判斷一個(gè)空對(duì)象的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java線(xiàn)程的生命周期的詳解

    Java線(xiàn)程的生命周期的詳解

    這篇文章主要介紹了Java線(xiàn)程的生命周期的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 解決JAVA遍歷List集合,刪除數(shù)據(jù)時(shí)出現(xiàn)的問(wèn)題

    解決JAVA遍歷List集合,刪除數(shù)據(jù)時(shí)出現(xiàn)的問(wèn)題

    這篇文章主要介紹了解決JAVA遍歷List集合時(shí),刪除數(shù)據(jù)出現(xiàn)的問(wèn)題,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Java OpenCV圖像處理之背景消除

    Java OpenCV圖像處理之背景消除

    GMM(高斯混合模型)是基于像素樣本統(tǒng)計(jì)信息的背景表示方法,利用像素在較長(zhǎng)時(shí)間內(nèi)大量樣本值的概率密度等統(tǒng)計(jì)信息表示別境,然后使用統(tǒng)計(jì)差分進(jìn)行目標(biāo)像素判斷達(dá)到預(yù)期效果。本文將利用GMM方法實(shí)現(xiàn)圖像背景消除,需要的可以參考一下
    2022-02-02
  • idea maven編譯報(bào)錯(cuò)Java heap space的解決方法

    idea maven編譯報(bào)錯(cuò)Java heap space的解決方法

    這篇文章主要為大家詳細(xì)介紹了idea maven編譯報(bào)錯(cuò)Java heap space的相關(guān)解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04

最新評(píng)論

宁陵县| 南京市| 澎湖县| 威远县| 民权县| 磴口县| 长岛县| 潞西市| 清丰县| 周至县| 中方县| 永川市| 武功县| 宜阳县| 建始县| 时尚| 双流县| 弥渡县| 太白县| 乃东县| 华亭县| 四子王旗| 嵊州市| 贵定县| 四平市| 微博| 新竹市| 昭苏县| 西林县| 山东省| 金山区| 西吉县| 遵义市| 兰溪市| 任丘市| 广灵县| 武宣县| 安达市| 拜城县| 新安县| 青铜峡市|