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

springboot項目打包鏡像方式以及區(qū)分環(huán)境打包的方法

 更新時間:2024年03月04日 10:22:40   作者:皮卡沖撞  
本文主要介紹了springboot項目打包鏡像方式以及區(qū)分環(huán)境打包的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

方法一:將項目jar包手動推送到docker服務器上

1.用maven對項目進行打包,打包成功后會有一個target目錄,目錄下有打好的項目jar包

2.將jar包上傳到服務器上,我用的是finalshell工具,大家可以自己根據(jù)自己使用的工具將文件傳送到服務器上

3.在跟jar包同級目錄下寫Dockerfile文件

dockerfile文件具體內(nèi)容

FROM openjdk:11  #基于哪些鏡像進行構(gòu)建
MAINTAINER gpj #作者名稱
#
# 將jar包添加到容器中,并命名為 springboot_docker.jar
ADD demo-0.0.1-SNAPSHOT.jar /demo.jar
# 運行jar包
RUN bash -c 'touch demo.jar'
ENTRYPOINT ["java", "-jar", "demo.jar"]

# 設置時區(qū)
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# SpringBoot項目配置的端口號為9999,需要將9999暴露出去 
EXPOSE 9999

4.執(zhí)行docker build命令

docker build -f Dockerfile -t demo:1.0 .

5.查看鏡像

docker images

可以看到剛剛打包的鏡像

6.運行容器

docker run -d --name dmeo -p 9999:9999 demo:1.0

查看容器是否在運行

docker ps

服務器開放9999端口

firewall-cmd --zone=public --add-port=9999/tcp --permanent

systemctl restart firewalld

調(diào)用后端方法

方法二:在idea中安裝docker插件,通過插件部署

1.安裝docker插件

進入項目,點擊File->Settings->Plugins,docker插件是默認安裝上的,可以先去Installed中查看是否已經(jīng)安裝

如果未安裝可以點擊Marketplace,在搜索框中搜索docker,點擊Installed進行安裝

2.打開docker遠程訪問

修改docker.service文件

Docker 安裝成功之后,首先需要修改 Docker 配置來開啟允許遠程訪問 Docker 的功能。

文件位置:/lib/systemd/system/docker.service

修改內(nèi)容: 加入如下內(nèi)容:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

服務器開放2375端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent

systemctl restart firewalld

重啟docker

systemctl daemon-reload

systemctl restart docker

3.在idea的docker插件中配置docker遠程訪問的地址

在idea項目中點擊File->settings->Build->Docker

4.在項目根目錄和pom文件同級的地方寫Dockerfile文件

dockerfile文件的具體內(nèi)容

FROM openjdk:11
MAINTAINER jyz
#
# 將jar包添加到容器中,并命名為 springboot_docker.jar
ADD demo-0.0.1-SNAPSHOT.jar /demo.jar
# 運行jar包
RUN bash -c 'touch demo.jar'
ENTRYPOINT ["java", "-jar", "demo.jar"]
# 設置時區(qū)
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# SpringBoot項目配置的端口號為9999,需要將9999暴露出去
EXPOSE 9999

5.在啟動配置那里編輯docker配置

之后點擊執(zhí)行

可以根據(jù)方法一中的最后兩步進行驗證

方法三:用maven插件進行構(gòu)建

開啟docker遠程訪問,詳細步驟見方法二

將dockerfile文件放到resource文件夾下

1.在pom文件中引入docker插件

pom文件詳細內(nèi)容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>11</java.version>
        <docker-ip>服務器IP</docker-ip>
        <docker-url>http://${docker-ip}:2375</docker-url>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <configuration>
                    <dockerHost>${docker-url}</dockerHost>
                    <imageName>${project.artifactId}:${project.version}</imageName>
                    <!-- 在生成圖像后將其推入的標志。默認為false -->
                    <pushImage>true</pushImage>
                    <imageTags>
                        <!-- 指定鏡像標簽,可以排至多個標簽 -->
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!--是否強制覆蓋已有鏡像-->
                    <forceTags>true</forceTags>
                    <!--方式一:1、指定Dockerfile文件所在目錄,通過文件執(zhí)行打包上傳nexus私服-->
                    <dockerDirectory>src/main/resources</dockerDirectory>
                    <!-- 指定docker鏡像打包參數(shù),即dockerfile中使用的參數(shù),通過${參數(shù)名}取值 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--指定需要復制的根目錄,${project.build.directory}表示target目錄-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要復制的文件,${project.build.finalName}.jar表示打包后的jar包文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2.運行mvn build命令

mvn docker:build

成功打包成鏡像

可以根據(jù)方法一中的最后兩步進行驗證

基于第三步的配置進行鏡像區(qū)分環(huán)境

以下文件需要配置到pom文件中,這里的配置每一個profile標簽都是獨立的,只有在打包的時候才會用到,也就是執(zhí)行 mvn命令時通過 -P這個指令指定profile標簽的id那么打包所用的一些參數(shù)配置會以你制定的profile為準。

    <profiles>
        <profile>
            <!--不同環(huán)境Profile的唯一id-->
            <id>dev</id>
            <properties>
                <!--profiles.active是自定義的字段(名字隨便起),自定義字段可以有多個-->
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <!--properties標簽下定義的標簽是個性化的,根據(jù)業(yè)務項目需要定制不同標簽,-->
            <properties>
                <profiles.active>prod</profiles.active>
                <docker-url>服務器IP:2375</docker-url>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
                <docker-url>服務器IP:2375</docker-url>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

此時把之前在pom中<properties>定義的docker-url刪除,在執(zhí)行mvn打包鏡像命令時添加 -P

<!--這里如果鏡像統(tǒng)一都是由一個docker服務器打包的話,在鏡像的名字中添加上test或者prod,再或者其他標識不同環(huán)境的信息即可,我這里是使用的profiles.active作區(qū)分,對應的是我上面聲明的環(huán)境信息-->
<imageName>${project.artifactId}-${profiles.active}:${project.version}</imageName>
mvn -Ptest docker:build

到此這篇關(guān)于springboot項目打包鏡像方式以及區(qū)分環(huán)境打包的方法的文章就介紹到這了,更多相關(guān)springboot 打包鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 詳解Java的閉包

    詳解Java的閉包

    這篇文章主要介紹了詳解Java的閉包,作者從Lambda和默認方法等重要特性深入講解,極力推薦!需要的朋友可以參考下
    2015-07-07
  • java實現(xiàn)簡單聊天室單人版

    java實現(xiàn)簡單聊天室單人版

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單聊天室的單人版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • SpringBoot文件分片上傳的示例代碼

    SpringBoot文件分片上傳的示例代碼

    分片上傳在很多地方都可以使用的到,本文主要介紹了SpringBoot文件分片上傳的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 在RedHat系統(tǒng)上安裝JDK與Tomcat的步驟

    在RedHat系統(tǒng)上安裝JDK與Tomcat的步驟

    這篇文章主要介紹了在RedHat系統(tǒng)上安裝Java與Tomcat的步驟,同樣適用于CentOS等RedHat系的Linux系統(tǒng),需要的朋友可以參考下
    2015-11-11
  • Java TimedCache 帶時間緩存工具類詳解使用

    Java TimedCache 帶時間緩存工具類詳解使用

    工具類是包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字符串標記生成器、隨機數(shù)生成器和位數(shù)組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期工具等各類常用工具包,本文將介紹帶時間緩存工具類
    2021-10-10
  • SpringBoot報錯Invalid?bound?statement?(not?found)問題排查和解決方案

    SpringBoot報錯Invalid?bound?statement?(not?found)問題排查和解決方案

    這篇文章主要介紹了SpringBoot報錯Invalid?bound?statement?(not?found)問題排查和解決方案,文中通過圖文結(jié)合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • 解決BeanUtils.copyProperties無法成功封裝的問題

    解決BeanUtils.copyProperties無法成功封裝的問題

    這篇文章主要介紹了解決BeanUtils.copyProperties無法成功封裝的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java Redis Redisson配置教程詳解

    Java Redis Redisson配置教程詳解

    這篇文章主要介紹了Java Redis Redisson配置教程,包括Session共享配置及其他Redisson的Config配置方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Java中scheduleAtFixedRate的用法

    Java中scheduleAtFixedRate的用法

    如何正確使用Java中的scheduleAtFixedRate是一篇介紹Java中定時任務調(diào)度器的文章。它詳細介紹了scheduleAtFixedRate方法的用法、參數(shù)及作用,并給出了一些實例以幫助讀者更好地理解其使用。本文為Java開發(fā)人員提供了一些實用的技巧,幫助他們更好地管理和控制定時任務
    2023-04-04
  • 超個性修改SpringBoot項目的啟動banner的方法

    超個性修改SpringBoot項目的啟動banner的方法

    這篇文章主要介紹了超個性修改SpringBoot項目的啟動banner的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論