国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【docker系列】docker實戰(zhàn)之部署SpringBoot項目

這篇具有很好參考價值的文章主要介紹了【docker系列】docker實戰(zhàn)之部署SpringBoot項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。
【docker系列】docker實戰(zhàn)之部署SpringBoot項目,s10 分布式,docker,spring boot,容器

  • 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老
  • 導(dǎo)航
    • 檀越劍指大廠系列:全面總結(jié) java 核心技術(shù)點,如集合,jvm,并發(fā)編程 redis,kafka,Spring,微服務(wù),Netty 等
    • 常用開發(fā)工具系列:羅列常用的開發(fā)工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 數(shù)據(jù)庫系列:詳細總結(jié)了常用數(shù)據(jù)庫 mysql 技術(shù)點,以及工作中遇到的 mysql 問題等
    • 懶人運維系列:總結(jié)好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
    • 數(shù)據(jù)結(jié)構(gòu)與算法系列:總結(jié)數(shù)據(jù)結(jié)構(gòu)和算法,不同類型針對性訓(xùn)練,提升編程思維,劍指大廠

非常期待和您一起在這個小小的網(wǎng)絡(luò)世界里共同探索、學(xué)習(xí)和成長。?????? ?? 歡迎訂閱本專欄 ??

一.背景介紹

1.什么是 docker?

Docker 是一種開源的容器化平臺,可以將應(yīng)用程序及其依賴項打包到一個可移植的容器中,然后發(fā)布到任何支持 Docker 的服務(wù)器上。

Docker 的架構(gòu)由三個主要組件組成:Docker 客戶端、Docker 守護進程和 Docker 鏡像。

Docker 客戶端用于與 Docker 交互,Docker 守護進程負責(zé)管理和監(jiān)控 Docker 的運行,Docker 鏡像是一個只讀的模板,包含了運行容器所需的文件系統(tǒng)和依賴項。

自從 Docker 發(fā)布以來,它迅速獲得了廣泛的認可和采用。Docker 在不到一年的時間內(nèi)就實現(xiàn)了 100 萬次的下載,并吸引了來自全球各地的開發(fā)人員和企業(yè)的關(guān)注。Docker 的應(yīng)用場景包括:應(yīng)用程序的開發(fā)、測試和部署、多租戶環(huán)境下的應(yīng)用程序隔離、快速搭建開發(fā)環(huán)境、微服務(wù)架構(gòu)等。

2.docker 的優(yōu)點?

Docker 的優(yōu)點如下:

  1. 快速部署:Docker 可以幫助快速部署應(yīng)用程序,并使其能夠在多種環(huán)境中運行。您可以將應(yīng)用程序和它的依賴項打包成容器,并輕松地將其部署到任何支持 Docker 的平臺上。
  2. 環(huán)境一致性:Docker 可以確保應(yīng)用程序在不同的環(huán)境中運行時具有相同的行為。這是因為 Docker 容器包含了應(yīng)用程序及其依賴項,因此可以在任何地方運行。
  3. 資源隔離:Docker 可以隔離應(yīng)用程序及其依賴項,從而確保它們不會干擾其他應(yīng)用程序或系統(tǒng)組件。這種隔離可以幫助提高應(yīng)用程序的安全性和可靠性。
  4. 更高的效率:Docker 可以幫助提高應(yīng)用程序的效率,因為它可以在容器中運行多個應(yīng)用程序?qū)嵗?,從而最大化利用系統(tǒng)資源。5. 更輕量級:Docker 容器比傳統(tǒng)的虛擬機更輕量級,因為它們共享主機操作系統(tǒng)的內(nèi)核。這意味著 Docker 容器可以更快地啟動和停止,并且需要更少的系統(tǒng)資源。

3.部署基本步驟?

以下是 Docker 部署 Spring Boot 項目的基本步驟:

  1. 在 Spring Boot 項目的根目錄下創(chuàng)建一個名為 Dockerfile 的文件。
  2. 在 Dockerfile 中編寫 Docker 鏡像的構(gòu)建指令,例如:
    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ADD target/demo.jar app.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    其中,F(xiàn)ROM 指令指定了使用的基礎(chǔ)鏡像,VOLUME 指令指定了掛載點,ADD 指令將 Spring Boot 項目的 jar 包添加到鏡像中,ENTRYPOINT 指令指定了容器啟動時執(zhí)行的命令。
  3. 在 Spring Boot 項目的根目錄下執(zhí)行以下命令,將 Spring Boot 項目打包成 jar 包:
    mvn clean package
    
  4. 在 Spring Boot 項目的根目錄下執(zhí)行以下命令,使用 Dockerfile 構(gòu)建 Docker 鏡像:
    docker build -t demo .
    
    其中,-t 指令指定了鏡像的名稱,"."表示 Dockerfile 所在的當(dāng)前目錄。
  5. 在 Docker 中啟動容器:
    docker run -p 8080:8080 demo
    
    其中,-p 指令指定了容器端口和主機端口的映射關(guān)系,demo 是鏡像的名稱。

二.部署方式 1

1.說明

  1. 方式 1 是通過在本地打鏡像
  2. 上傳鏡像到倉庫
  3. 登錄服務(wù)器
  4. 拉取鏡像
  5. 啟動容器
  6. 方式 1 比方式 2 更加穩(wěn)健規(guī)范

2.Dockerfile

FROM openjdk:8

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /home
USER root

ENV PROFILE="dev"
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8

ENV PARAMS=""

COPY /target/*.jar /home/app.jar

EXPOSE 80

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN echo -e 'mkdir -p ./logs/gc && java $JAVA_OPTS -jar ./app.jar --spring.profiles.active=$PROFILE $PARAMS' > entrypoint.sh

ENTRYPOINT ["sh", "entrypoint.sh"]

3.打鏡像

以下腳本寫在 push.sh 中,主要是編譯打包,打鏡像,推送到遠程倉庫。

#!/usr/bin/env bash

#版本
VERSION=latest

mvn clean package -P test
export DOCKER_SCAN_SUGGEST=false

docker build -t xxx-xxx-xxx-xxx-kwan:$VERSION .
docker tag xxx-xxx-xxx-xxx-kwan:$VERSION deploy.xxx.com/xxx-test/xxx-xxx-xxx-xxx-kwan:$VERSION
docker push deploy.xxx.com/xxx-test/xxx-xxx-xxx-xxx-kwan:$VERSION
docker rmi xxx-xxx-xxx-xxx-kwan:$VERSION deploy.xxx.com/xxx-test/xxx-xxx-xxx-xxx-kwan:$VERSION
#打包時間
echo "打包時間為="$(date +%F%n%T)

4.啟動腳本

#!/usr/bin/env bash

#設(shè)置容器名稱
CONTAINER_NAME=xxx-xxx-xxx-xxx-kwan

#鏡像位置與名稱
IMAGE_NAME=deploy.xxx.com/xxx-test/xxx-xxx-xxx-xxx-kwan:latest

#刪除容器
docker rm -f ${CONTAINER_NAME}

#刪除鏡像
docker rmi ${IMAGE_NAME}

#拉取鏡像
docker pull ${IMAGE_NAME}

#啟動容器
docker run -d --name ${CONTAINER_NAME} --privileged=true  -e PROFILE=test -w /home -p 8888:80 \
 -v $PWD/logs:/home/logs -v /home/uploads:/home/uploads --restart=always ${IMAGE_NAME}
docker logs -f  --tail 500  ${CONTAINER_NAME}

三.部署方式 2

1.說明

部署方式 2 的方式其實是省去了部署方式 1 的倉庫,通過 git 進行本地代碼和服務(wù)器代碼的同步。

  1. 本地提交代碼到 gitlab
  2. 登錄服務(wù)器,并到達指定 gitlab 倉庫的目錄
  3. git pull 拉取代碼
  4. 通過 maven 打包
  5. 根據(jù) Dockerfile 對打的包進行構(gòu)建鏡像
  6. 根據(jù)鏡像啟動容器
  7. 通過 docker 完成后端項目部署

2.項目路徑

/kwan/chatbot-vue/end/vue-springboot-kwan/

3.服務(wù)器腳本

#!/bin/bash

#進入項目目錄
cd /kwan/chatbot-vue/end/vue-springboot-kwan/

#拉取最新代碼
git pull

#maven打包
mvn package -Dmaven.test.skip=true

#移動jar包到指定目錄
yes | mv /kwan/chatbot-vue/end/vue-springboot-kwan/target/vue-springboot-kwan-0.0.1-SNAPSHOT.jar /kwan/chatbot-vue/end

#到達指定目錄
cd /kwan/chatbot-vue/end

#構(gòu)建鏡像
docker build -t chatbox-vue-8888 .

#刪除鏡像
docker rm -f chatbox-vue-8888

#啟動容器
docker run -d -p 8888:80 --restart=always --name chatbox-vue-8888 -v /kwan/img:/kwan/img chatbox-vue-8888

4.Dockerfile

Dockerfile 所在位置為/kwan/chatbot-vue/end 目錄下

FROM openjdk:8
VOLUME /tmp
ENV TZ=Asia/Shanghai
ADD vue-springboot-kwan-0.0.1-SNAPSHOT.jar  app.jar
EXPOSE 80
ENTRYPOINT ["java","-jar","/app.jar"]

5.注意事項

  • 注意 Dockerfile 要和 jar 包在同一目錄
  • git pull 不定期需要密碼
  • 注意指定容器時區(qū)
  • 存在上傳下載文件時需要指定文件掛載目錄

覺得有用的話點個贊 ???? 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!??????

??????如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!?? ?? ??

??????Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!??????

【docker系列】docker實戰(zhàn)之部署SpringBoot項目,s10 分布式,docker,spring boot,容器文章來源地址http://www.zghlxwxcb.cn/news/detail-751863.html

到了這里,關(guān)于【docker系列】docker實戰(zhàn)之部署SpringBoot項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Docker】docker部署springboot+vue+mysql+nginx前后端分離項目【部署實戰(zhàn)篇】

    【Docker】docker部署springboot+vue+mysql+nginx前后端分離項目【部署實戰(zhàn)篇】

    安裝docker: https://blog.csdn.net/qq_39900031/article/details/121666892 springboot-vue前后端分離項目:https://gitee.com/ma-haojie/springboot-vue-demo.git https://jackwei.blog.csdn.net/article/details/110227719 或者 --restart=always 參數(shù)能夠使我們 在重啟docker時,自動啟動相關(guān)容器 。 Docker容器的重啟策略如下: no,默認

    2024年02月13日
    瀏覽(23)
  • Linux系列:從0到1用Docker部署springboot項目

    Linux系列:從0到1用Docker部署springboot項目

    目錄 1.前提條件 2.編寫DockerFile鏡像文件 3.打包SpringBoot項目 ?4.通過軟件Xftp進行傳輸(*) 1.點擊“文件-新建”?編輯 5.操作遠程主機 1.docker構(gòu)建 2.容器運行 ?6.容器的關(guān)閉和刪除 1.前提條件 Linux、docker、xftp的安裝、一臺可以訪問的遠程主機 2.編寫DockerFile鏡像文件 Dockerfile 是

    2024年02月13日
    瀏覽(23)
  • GreenPlum分布式集群部署實戰(zhàn)

    ???????????? 哈嘍!大家好,我是【IT邦德】,江湖人稱jeames007,10余年DBA及大數(shù)據(jù)工作經(jīng)驗 一位上進心十足的【大數(shù)據(jù)領(lǐng)域博主】!?????? 中國DBA聯(lián)盟(ACDU)成員,目前服務(wù)于工業(yè)互聯(lián)網(wǎng) 擅長主流Oracle、MySQL、PG、高斯及Greenplum運維開發(fā),備份恢復(fù),安裝遷移,性能優(yōu)

    2024年02月08日
    瀏覽(19)
  • SpringBoot+AOP+Redission實戰(zhàn)分布式鎖

    SpringBoot+AOP+Redission實戰(zhàn)分布式鎖

    在集群環(huán)境下非單體應(yīng)用存在的問題:JVM鎖只能控制本地資源的訪問,無法控制多個JVM間的資源訪問,所以需要借助第三方中間件來控制整體的資源訪問,redis是一個可以實現(xiàn)分布式鎖,保證AP的中間件,可以采用setnx命令進行實現(xiàn),但是在實現(xiàn)細節(jié)上也有很多需要注意的點,

    2024年02月14日
    瀏覽(51)
  • minio分布式集群安裝部署實戰(zhàn)詳細手冊

    minio分布式集群安裝部署實戰(zhàn)詳細手冊

    Minio是GlusterFS創(chuàng)始人之一Anand Babu Periasamy發(fā)布新的開源項目?;贏pache License v2.0開源協(xié)議的對象存儲項目,采用Golang實現(xiàn),客戶端支Java,Python,Javacript, Golang語言。 其設(shè)計的主要目標(biāo)是作為私有云對象存儲的標(biāo)準方案。主要用于存儲海量的圖片,視頻,文檔等。非常適合于存儲

    2024年02月12日
    瀏覽(25)
  • accelerate 分布式技巧實戰(zhàn)--部署ChatGLM-6B(三)

    下載相關(guān)文件: 正常情況下,我們使用Chat-GLM需要的顯存大于13G,內(nèi)存沒有評估過,但上述的肯定是不夠的,16G應(yīng)該可以。 GPU使用4.9G,內(nèi)存使用5.5G。 GPU使用9.7G,內(nèi)存使用5.9G。第一輪輸入你好后GPU使用11.2G。 注意,這里我們設(shè)置設(shè)備映射為balanced,并只使用前兩塊GPU。顯卡

    2024年02月09日
    瀏覽(17)
  • 中間件系列 - Redis入門到實戰(zhàn)(高級篇-分布式緩存)

    中間件系列 - Redis入門到實戰(zhàn)(高級篇-分布式緩存)

    學(xué)習(xí)視頻: 黑馬程序員Redis入門到實戰(zhàn)教程,深度透析redis底層原理+redis分布式鎖+企業(yè)解決方案+黑馬點評實戰(zhàn)項目 中間件系列 - Redis入門到實戰(zhàn) 本內(nèi)容僅用于個人學(xué)習(xí)筆記,如有侵擾,聯(lián)系刪除 學(xué)習(xí)目標(biāo) Redis持久化 Redis主從 Redis哨兵 Redis分片集群 - 基于Redis集群解決單機R

    2024年02月03日
    瀏覽(23)
  • Docker部署ZooKeeper分布式協(xié)調(diào)服務(wù)

    1、準備工作 2、創(chuàng)建TEST容器,將conf目錄COPY出來,在映射進去,方便后續(xù)維護管理! 3、運行容器 4、測試鏈接zookeeper 正常輸出內(nèi)容:

    2024年02月07日
    瀏覽(24)
  • 使用 Docker 部署分布式存儲系統(tǒng)——Ceph

    使用 Docker 部署分布式存儲系統(tǒng)——Ceph

    最近工作中接觸了一個 Python + Flask 的新項目,項目中使用了 Ceph 對象存儲服務(wù)。遂在開發(fā)環(huán)境使用 Docker 搭建了一套 Ceph 集群。 Ceph 官方文檔 Ceph 是一個開源的分布式存儲系統(tǒng),提供了對象存儲、塊存儲和文件系統(tǒng)三種存儲接口。Ceph 將數(shù)據(jù)存儲在邏輯存儲池中,使用 CRUSH 分

    2024年04月15日
    瀏覽(24)
  • 【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式鏈路追蹤

    【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式鏈路追蹤

    點擊跳轉(zhuǎn):Docker安裝MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常見服務(wù)全套(質(zhì)量有保證,內(nèi)容詳情) 本文主要討論在Elasticsearch和Kibana安裝好合適版本的前提下,繼續(xù)整合Zipkin。 一般的,它們的工作過程是這樣的:Spring Cloud微服務(wù)把調(diào)用鏈路的日志發(fā)送給Zipkin,Zipkin把數(shù)據(jù)發(fā)

    2024年02月14日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包