欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker?快速部署Springboot項目超詳細最新版

 更新時間:2023年05月05日 09:39:01   作者:Touch&  
這篇文章主要介紹了Docker?快速部署Springboot項目超詳細最新版的相關(guān)資料,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Docker 快速部署Springboot項目

Docker 安裝 (完整詳細版)

Docker 日常命令大全(完整詳細版)

 1、項目準備

1.1 新建一個springboot項目

1.2 打包

mvn clean package -Dmaven.test.skip=true

2、編寫Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: 
# 基礎(chǔ)鏡像使用java
FROM openjdk:8
# 作者
MAINTAINER laihx
# VOLUME 指定了臨時文件目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下創(chuàng)建了一個臨時文件,并鏈接到容器的/tmp
VOLUME /tmp 
# 將jar包添加到容器中并更名為xx.jar
ADD demo.jar test.jar 
# 運行jar包
RUN bash -c 'touch /test.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]

將jar包和Dockerfile文件放在上傳到同一空目錄下

 3、執(zhí)行鏡像打包

sudo docker build . -t test-demo:v1.0

查看鏡像

docker images

java8鏡像:啟動springboot需要jdk的支持,所以直接拉取java8鏡像即可docker pull java:8,拉取結(jié)束可以使用docker images查看是否成功

docker pull java:8
docker images

 4、啟動鏡像

# -d參數(shù)是讓容器后臺運行
# 8087為部署后實際代理端口,8089為程序的端口
sudo docker run -d -p 8087:8089 --name test-demo test-demo:v1.0 

5、測試結(jié)果 

 6、動態(tài)查看日志

docker logs -f --tail=100 test-demo

擴展:SpringBoot+Docker+IDEA 實現(xiàn)一鍵構(gòu)建+推送、運行、同鏡像多容器啟動(推薦)

場景:

由于公司項目需要,需要使用部署微服務(wù)項目,而之前都是使用tomcat部署,操作十分繁瑣。最近正好在學習Docker,利用Docker容器做部署嘗試

需求:

  • 使用Docker部署服務(wù)
  • 支持idea插件,一鍵操作構(gòu)建、推送鏡像、運行
  • 單個鏡像需根據(jù)不同端口部署多個容器
  • 日志持久化

必要軟件

服務(wù)器(我的版本為CentOS:7.9)

  • Docker(需要開通遠程訪問,正式環(huán)境請使用證書加密,我這里測試用無加密)
  • Harbor 鏡像倉庫(可選)

開發(fā)端

  • Docker Desktop (支持本地運行docker-compose,如果不用docker-compose插件可以不用)下載地址
  • 桌面版docker必要插件下載地址
  • docker-comopse 下載地址
  • IDEA(廢話)
  • docker插件 (可選,在idea插件市場下載,名字就叫Docker)

在idea中配置docker

配置

目錄結(jié)構(gòu):

目錄結(jié)構(gòu)

父項目配置(關(guān)鍵配置):

pom.xml

<properties>
    <!-- docker主機ip(這里填寫自己docker所在地址) -->
    <docker.host>192.168.10.10</docker.host>
    <!-- harbor倉庫地址(可選,構(gòu)建鏡像后自動上傳到該倉庫) -->
    <docker.repostory>${docker.host}</docker.repostory>
    <!-- docker遠程地址, 如果是https協(xié)議則將http換成https即可 -->
    <docker.remote>http://${docker.host}:2375</docker.remote>
    <!--項目名,需要和Harbor中的項目名稱保持一致 -->
    <docker.registry.name>library</docker.registry.name>
    <!-- 默認端口 -->
    <port>8080</port>
</properties>

... 

<build>
    <pluginManagement>
        <plugins>
            <!--構(gòu)建鏡像-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <!--Maven 的配置文件 setting.xml 中增加相關(guān) server 配置,主要配置 Docker registry用戶認-->
                    <serverId>docker-harbor</serverId>
                    <dockerHost>${docker.remote}</dockerHost>
                    <!-- 鏡像名格式:   倉庫地址/倉庫項目名/當前項目名   (按需修改) -->
                    <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}</imageName>
                    <baseImage>openjdk:8u282-jdk</baseImage>
                    <maintainer>作者</maintainer>
                    <env>
                        <PORT>8080</PORT>
                        <TZ>Asia/Shanghai</TZ>
                    </env>
                    <!-- 這里的ln和后面的操作是保證時間同步 -->
                    <runs>mkdir -p /epark/logs &amp;&amp; ln -sf /usr/share/zoneinfo/$TZ /etc/localtime &amp;&amp; echo $TZ > /etc/timezone</runs>
                    <volumes>/epark</volumes>
                    <!--suppress UnresolvedMavenProperty -->
                    <entryPoint>["java","-Djava.security.egd=file:/dev/./urandom","-jar","${project.build.finalName}.jar","--server.port=${PORT}"]
                    </entryPoint>
					<!-- 這里是倉庫地址,不需要可以刪除 -->
                    <registryUrl>http://${docker.repostory}</registryUrl>
                    <!-- 這里指定是否構(gòu)建成功后自動推送到倉庫,不需要可以刪除 -->
                    <pushImage>true</pushImage>
                    <resources>
                        <resource>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- docker-compose的maven插件 -->
            <plugin>
                <groupId>com.dkanejs.maven.plugins</groupId>
                <artifactId>docker-compose-maven-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                	<!-- 路徑為: 當前項目的上一級(也就是父項目),所以不支持二級以上的子項目 -->
                    <composeFile>${project.basedir}/../docker-compose.yml</composeFile>
                    <apiVersion>1.22</apiVersion>
                    <host>${docker.remote}</host>
                    <envVars>
                        <!-- 默認端口 -->
                        <port>${port}</port>
                        <host>${docker.repostory}</host>
                        <name>${project.build.finalName}</name>
                        <!-- 自定義項目名,支持單鏡像啟動多容器的關(guān)鍵 -->
                        <COMPOSE_PROJECT_NAME>${project.build.finalName}-${port}</COMPOSE_PROJECT_NAME>
                        <!-- 這里是證書配置,如果開啟了docker證書,則需要配置 -->
<!--                            <DOCKER_TLS_VERIFY>1</DOCKER_TLS_VERIFY>-->
<!--                            <DOCKER_CERT_PATH>D:\docker-ca</DOCKER_CERT_PATH>-->
                    </envVars>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

注意,${project.artifactId}引用的項目構(gòu)件ID只能是小寫

docker-compose.yml

version: '3.4'
services:
  eparking:
    # 鏡像
    image: ${host}/library/${name}:latest
    # 容器名
    container_name: ${name}-${port}
    # 開機自啟(自選)
    #restart: always
    # 環(huán)境配置
    environment:
      # 端口
      - PORT=${port}
    # 端口映射
    ports:
      - "${port}:${port}"
    # 卷映射,這里日志根據(jù)自己項目輸出位置調(diào)整
    volumes:
      - "/log/${name}/${port}:/logs/"

配置了倉庫的話需要配置Maven的settings.xml的賬號密碼

<servers>
    <server>
        <id>docker-harbor</id>
        <username>倉庫用戶名</username>
        <password>倉庫密碼</password>
    </server>
</servers>

子項目配置(關(guān)鍵配置)

pom.xml

<!-- 這里配置的端口會傳入父項目,最終傳入docker-compose.yml和Dockerfile文件 -->
<!-- 如果需要單個鏡像啟動多個容器,改這里的端口再啟動就可以了 -->
<properties>
	<port>8082</port>
</properties>

... 

<build>
    <plugins>
    	<!-- docker插件 -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
        </plugin>
        <!-- docker-compose的maven插件,由于docker插件不支持運行,所以單獨安裝了 -->
        <plugin>
            <groupId>com.dkanejs.maven.plugins</groupId>
            <artifactId>docker-compose-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果一切順利maven中會出現(xiàn)docker和docker-compse插件
先執(zhí)行docker:build構(gòu)建,再執(zhí)行docker-compose:up啟動

maven插件

成功后可以查看docker容器啟動情況了,我這里使用的是docker插件

docker插件

好了,這功能花費了我很長時間,最終實現(xiàn)了這些功能??赡苓€有些小細節(jié)沒展示出來,可以盡管提問

到此這篇關(guān)于Docker 快速部署Springboot項目超詳細最新版的文章就介紹到這了,更多相關(guān)Docker 部署Springboot項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用shardingsphere對SQLServer坑的解決

    使用shardingsphere對SQLServer坑的解決

    本文主要介紹了使用shardingsphere對SQLServer坑的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • 解析HashMap中的put方法執(zhí)行流程

    解析HashMap中的put方法執(zhí)行流程

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它在日常開發(fā)中有著非常多的應(yīng)用場景,也是面試中的高頻考點,本篇文章就來分析一下HashMap集合中的put方法
    2021-12-12
  • Java基于正則表達式實現(xiàn)xml文件的解析功能詳解

    Java基于正則表達式實現(xiàn)xml文件的解析功能詳解

    這篇文章主要介紹了Java基于正則表達式實現(xiàn)xml文件的解析功能,結(jié)合實例形式分析了java使用正則表達式針對xml文件節(jié)點的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 秒懂Kotlin之Java工程師快速掌握Kotlin的技巧

    秒懂Kotlin之Java工程師快速掌握Kotlin的技巧

    Kotlin 是一種在 Java 虛擬機上運行的靜態(tài)類型編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設(shè)計開發(fā)并開源。這篇文章主要介紹了秒懂Kotlin之Java工程師快速掌握Kotlin的技巧,需要的朋友可以參考下
    2021-09-09
  • SpringIOC refresh()初始化代碼實例

    SpringIOC refresh()初始化代碼實例

    這篇文章主要介紹了SpringIOC refresh()初始化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Flowable執(zhí)行完畢的流程查找方法

    Flowable執(zhí)行完畢的流程查找方法

    這篇文章主要為大家介紹了Flowable執(zhí)行完畢的流程查找方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 詳解如何在Java中重寫equals()和hashCode()方法

    詳解如何在Java中重寫equals()和hashCode()方法

    在 Java 中,equals() 和 hashCode() 方法是 Object 類中定義的重要方法,它們用于比較對象的相等性以及計算對象的哈希值,本文將詳細介紹如何在 Java 中重寫 equals() 和 hashCode() 方法,并討論其最佳實踐,需要的朋友可以參考下
    2024-08-08
  • SpringBoot?整合?Elasticsearch?實現(xiàn)海量級數(shù)據(jù)搜索功能

    SpringBoot?整合?Elasticsearch?實現(xiàn)海量級數(shù)據(jù)搜索功能

    這篇文章主要介紹了SpringBoot?整合?Elasticsearch?實現(xiàn)海量級數(shù)據(jù)搜索,本文主要圍繞?SpringBoot?整合?ElasticSearch?接受數(shù)據(jù)的插入和搜索使用技巧,在實際的使用過程中,版本號尤其的重要,不同版本的?es,對應(yīng)的?api?是不一樣,需要的朋友可以參考下
    2022-07-07
  • Java中網(wǎng)絡(luò)IO的實現(xiàn)方式(BIO、NIO、AIO)介紹

    Java中網(wǎng)絡(luò)IO的實現(xiàn)方式(BIO、NIO、AIO)介紹

    這篇文章主要介紹了Java中網(wǎng)絡(luò)IO的實現(xiàn)方式(BIO、NIO、AIO)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java性能優(yōu)化技巧匯總

    Java性能優(yōu)化技巧匯總

    這篇文章主要介紹了Java性能優(yōu)化技巧,匯總了提升java程序性能的常用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論