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

歡迎訪問 生活随笔!

生活随笔

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

javascript

SpringBoot整合Docker实现一次构建到处运行

發布時間:2023/12/20 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合Docker实现一次构建到处运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

🍁個人主頁:微楓Micromaple

?本期專欄:《0到1項目搭建》歡迎訂閱學習~

📌源碼獲取:GitCode、GitHub、碼云Gitee 持續更新中,別忘了 star 喔~

本文講解的是 SpringBoot 引入容器化技術 Docker 實現一次構建到處運行,包括鏡像構建、Docker倉庫搭建使用、Docker倉庫可視化UI等內容。

PS:如果你是新手,可以跟著系列專欄的框架搭建先動手把項目搭建起來,然后在結合本期內容繼續深入學習,這樣會有更好的效果。

目錄

    • 寫在前面
    • 一、容器化部署的好處
    • 二、構建鏡像
      • 2.1、Dockerfile
      • 2.2、開始構建
    • 三、搭建私服
      • 3.1、搭建 Docker Registry
      • 3.2、搭建 Docker Registry WebUI
      • 3.3、客戶端配置
      • 3.4、上傳私服
    • 四、容器啟動

一、容器化部署的好處

Docker 作為一種新興的虛擬化方式,它可以更高效的利用系統資源,不需要進行硬件虛擬以及運行完整操作系統等額外開銷。

傳統的虛擬機技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由于直接運行宿主內核,無需啟動完整的操作系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

最重要的是一致的運行環境。 Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性。從而達到真正意義上的 一次構建,到處執行。

二、構建鏡像

2.1、Dockerfile

接著我們開始使用 Dockerfile 來定制我們的鏡像,從而達到容器化的目的。Dockerfile 的本質就是將一系列修改、安裝、構建、操作的命令整合到一起,去構建一個個性化的鏡像,以達到**一次構建,到處運行。**接下來我們就來構建自定義鏡像。

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

FROM openjdk:8-jreMAINTAINER Micromaple <micromaple@qq.com>RUN mkdir /appCOPY my-project-server-1.0.0-SNAPSHOT.jar /app/app.jarENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod,druid-prod"]EXPOSE 8899
  • FROM:指定基礎鏡像,項目是使用jdk8開發的項目,所以我們指定的基礎鏡像為openjdk:8-jre
  • MAINTAINER:項目維護人員
  • RUN:執行命令,在根目錄下創建app目錄
  • COPY:將宿主機當前目錄下的my-project-server-1.0.0-SNAPSHOT.jar文件拷貝到app目錄下,并重命名為app.jar
  • ENTRYPOINT:指定容器啟動程序及參數
  • EXPOSE:指定運行時容器提供服務的端口

2.2、開始構建

在虛擬機創建目錄

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

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

執行鏡像構建命令

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

構建成功

$ 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

創建目錄

mkdir -p /usr/local/docker/registry

在該目錄下創建Docker Registry 的 docker-compose.yml。內容如下:

cd /usr/local/docker/registry version: '3.1' services:registry:image: registryrestart: alwayscontainer_name: registryports:- 5000:5000volumes:- ./data:/var/lib/registry

啟動容器

docker-compose up -d

3.2、搭建 Docker Registry WebUI

創建目錄

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

在該目錄下創建Docker Registry 的 docker-compose.yml。內容如下:

cd /usr/local/docker/docker-registry-frontend version: '3.1' services:frontend:image: konradkleine/docker-registry-frontend:v2ports:- 8080:80volumes:- ./certs/frontend.crt:/etc/apache2/server.crt:ro- ./certs/frontend.key:/etc/apache2/server.key:roenvironment:- ENV_DOCKER_REGISTRY_HOST=192.168.110.158(Docker倉庫的IP)- ENV_DOCKER_REGISTRY_PORT=5000

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

啟動容器

docker-compose up -d

瀏覽器訪問http://192.168.110.158:8080/,效果如下:

3.3、客戶端配置

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

vi /etc/docker/daemon.json

需增加如下內容:

"insecure-registries": ["Docker倉庫的IP:5000" ]

完整daemon.json內容:

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

重新啟動服務

systemctl daemon-reload systemctl restart docker

3.4、上傳私服

搭建以及配置完成后,需要將我們之前構建的鏡像上傳至我們自己的Docker倉庫。

查看鏡像

$ 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)、鏡像標記

使用 docker tag 將 my-project-server:v1 這個鏡像標記為 192.168.110.158:5000/my-project-server:v1。

192.168.110.158為我的Docker倉庫的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

標記后,查看鏡像

$ 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)、驗證

此時我們將本地鏡像刪除,嘗試從私有倉庫下載這個鏡像

先刪除已有鏡像

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

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

四、容器啟動

鏡像構建并上傳至完成后,可以直接使用Docker Compose來啟動容器。實現一次構建到處運行。

創建目錄

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

在該目錄下創建Docker Registry 的 docker-compose.yml。內容如下:

cd /usr/local/docker/my-project version: '3.1' services:my_project_server:image: 192.168.110.158:5000/my-project-server:v1container_name: my-project-serverrestart: alwaysports:- 8899:8899volumes:- ./logs:/logsenvironment:TZ: Asia/Shanghai

啟動容器

docker-compose up -d

查看容器啟動狀態

docker ps -a

訪問查詢所有用戶接口

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

總結

以上是生活随笔為你收集整理的SpringBoot整合Docker实现一次构建到处运行的全部內容,希望文章能夠幫你解決所遇到的問題。

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