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

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

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

方法一:將項(xiàng)目jar包手動(dòng)推送到docker服務(wù)器上

1.用maven對(duì)項(xiàng)目進(jìn)行打包,打包成功后會(huì)有一個(gè)target目錄,目錄下有打好的項(xiàng)目jar包

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

3.在跟jar包同級(jí)目錄下寫(xiě)Dockerfile文件

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

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

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

# SpringBoot項(xiàng)目配置的端口號(hào)為9999,需要將9999暴露出去 
EXPOSE 9999

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

docker build -f Dockerfile -t demo:1.0 .

5.查看鏡像

docker images

可以看到剛剛打包的鏡像

6.運(yùn)行容器

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

查看容器是否在運(yùn)行

docker ps

服務(wù)器開(kāi)放9999端口

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

systemctl restart firewalld

調(diào)用后端方法

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

1.安裝docker插件

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

如果未安裝可以點(diǎn)擊Marketplace,在搜索框中搜索docker,點(diǎn)擊Installed進(jìn)行安裝

2.打開(kāi)docker遠(yuǎn)程訪問(wèn)

修改docker.service文件

Docker 安裝成功之后,首先需要修改 Docker 配置來(lái)開(kāi)啟允許遠(yuǎn)程訪問(wèn) 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"

服務(wù)器開(kāi)放2375端口

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

systemctl restart firewalld

重啟docker

systemctl daemon-reload

systemctl restart docker

3.在idea的docker插件中配置docker遠(yuǎn)程訪問(wèn)的地址

在idea項(xiàng)目中點(diǎn)擊File->settings->Build->Docker

4.在項(xiàng)目根目錄和pom文件同級(jí)的地方寫(xiě)Dockerfile文件

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

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

5.在啟動(dòng)配置那里編輯docker配置

之后點(diǎn)擊執(zhí)行

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

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

開(kāi)啟docker遠(yuǎn)程訪問(wèn),詳細(xì)步驟見(jiàn)方法二

將dockerfile文件放到resource文件夾下

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

pom文件詳細(xì)內(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>服務(wù)器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>
                    <!-- 在生成圖像后將其推入的標(biāo)志。默認(rèn)為false -->
                    <pushImage>true</pushImage>
                    <imageTags>
                        <!-- 指定鏡像標(biāo)簽,可以排至多個(gè)標(biāo)簽 -->
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!--是否強(qiáng)制覆蓋已有鏡像-->
                    <forceTags>true</forceTags>
                    <!--方式一:1、指定Dockerfile文件所在目錄,通過(guò)文件執(zhí)行打包上傳nexus私服-->
                    <dockerDirectory>src/main/resources</dockerDirectory>
                    <!-- 指定docker鏡像打包參數(shù),即dockerfile中使用的參數(shù),通過(guò)${參數(shù)名}取值 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--指定需要復(fù)制的根目錄,${project.build.directory}表示target目錄-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要復(fù)制的文件,${project.build.finalName}.jar表示打包后的jar包文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2.運(yùn)行mvn build命令

mvn docker:build

成功打包成鏡像

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

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論