最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot打包成Docker鏡像的幾種實現(xiàn)方式

 更新時間:2024年01月30日 09:16:26   作者:242030  
Spring Boot是一個用于構(gòu)建獨立的、可執(zhí)行的Spring應(yīng)用程序的框架,結(jié)合使用Spring Boot和Docker,可以方便地將應(yīng)用程序部署到不同的環(huán)境中本文,主要介紹了SpringBoot打包成Docker鏡像的幾種實現(xiàn)方式,感興趣的可以了解一下

1、第一種方式

1.1 編寫一個springboot項目并且打包成jar包

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!!!";
    }
}
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {

		SpringApplication.run(DemoApplication.class, args);
	}

}

1.2 安裝docker插件

Docker

1.3 項目打包

mvn package

1.4 在target目錄下編寫Dockerfile文件

FROM openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

在這里插入圖片描述

1.5 構(gòu)建鏡像

$ docker build -t demo:v1 .
[root@zsx target]# docker build -t demo:v1 .
Sending build context to Docker daemon  17.37MB
Step 1/5 : FROM openjdk:8
 ---> b273004037cc
Step 2/5 : COPY *.jar /app.jar
 ---> 71538f2a4725
Step 3/5 : CMD ["--server.port=8080"]
 ---> Running in 9a08516ce3b2
Removing intermediate container 9a08516ce3b2
 ---> 58ad7de95482
Step 4/5 : EXPOSE 8080
 ---> Running in 47ae06299ac5
Removing intermediate container 47ae06299ac5
 ---> 50c705487e20
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in 2252f518b4cb
Removing intermediate container 2252f518b4cb
 ---> 3da5156a3350
Successfully built 3da5156a3350
Successfully tagged demo:v1
$ docker images

在這里插入圖片描述

1.5 運行

$ docker run -d -P --name spring-boot-demo demo:v1
$ curl http://192.168.136.195:49153/hello

在這里插入圖片描述

2、第二種方式

2.1 SpringBoot項目

在這里插入圖片描述

<?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.0.0.RELEASE</version>
	</parent>

	<groupId>com.example</groupId>
	<artifactId>spring-boot-docker</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-docker</name>
	<description>spring-boot-docker</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<docker.image.prefix>springboot</docker.image.prefix>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

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

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

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- Docker maven plugin start-->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>1.0.0</version>
				<configuration>
					<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
					<dockerDirectory>src/main/docker</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
			<!-- Docker maven plugin start-->
		</plugins>
	</build>

</project>
package com.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DockerController {

    @RequestMapping("/")
    public String index() {
        return "Hello Docker!";
    }
}
FROM openjdk:8
VOLUME /tmp
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

這個 Dockerfile 文件很簡單,構(gòu)建 Jdk 基礎(chǔ)環(huán)境,添加 Spring Boot Jar 到鏡像中,簡單解釋一下:

  • FROM:表示使用 JDK8環(huán)境為基礎(chǔ)鏡像,如果鏡像不是本地的會從DockerHub進行下載。

  • VOLUME:VOLUME 指向了一個/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認使

    /tmp作為工作目錄。這個命令的效果是:在宿主機的/var/lib/docker目錄下創(chuàng)建一個臨時文件并把它鏈

    接到容器中的/tmp目錄。

  • ADD:拷貝文件并且重命名。

  • ENTRYPOINT:為了縮短 Tomcat 的啟動時間,添加java.security.egd的系統(tǒng)屬性指向/dev/urandom

    為 ENTRYPOINT。

2.2 使用Docker部署Spring Boot項目

將項目 spring-boot-docker 拷貝服務(wù)器中,進入項目路徑下進行打包測試。

# 打包
$ mvn package
# 啟動
$ java -jar target/spring-boot-docker-0.0.1-SNAPSHOT.jar

看到 Spring Boot 的啟動日志后表明環(huán)境配置沒有問題,接下來我們使用 DockerFile 構(gòu)建鏡像。

$ mvn package docker:build

第一次構(gòu)建可能有點慢,當(dāng)看到以下內(nèi)容的時候表明構(gòu)建成功:

[root@zsx spring-boot-docker]# mvn package docker:build
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-boot-docker 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ spring-boot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ spring-boot-docker ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.1:testResources (default-testResources) @ spring-boot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/temp/spring-boot-docker/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ spring-boot-docker ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ spring-boot-docker ---
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ spring-boot-docker ---
[INFO] Building jar: /home/temp/spring-boot-docker/target/spring-boot-docker-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.0.RELEASE:repackage (default) @ spring-boot-docker ---
[INFO]
[INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ spring-boot-docker ---
[INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
[INFO] Copying /home/temp/spring-boot-docker/target/spring-boot-docker-0.0.1-SNAPSHOT.jar -> /home/temp/spring-boot-docker/target/docker/spring-boot-docker-0.0.1-SNAPSHOT.jar
[INFO] Copying src/main/docker/Dockerfile -> /home/temp/spring-boot-docker/target/docker/Dockerfile
[INFO] Building image springboot/spring-boot-docker
Step 1/4 : FROM openjdk:8

 ---> b273004037cc
Step 2/4 : VOLUME /tmp

 ---> Using cache
 ---> 1ddce8ad30a4
Step 3/4 : ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar

 ---> 731e8e91b593
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

 ---> Running in 504bf74d0084
Removing intermediate container 504bf74d0084
 ---> b3bb84d4545a
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built b3bb84d4545a
Successfully tagged springboot/spring-boot-docker:latest
[INFO] Built springboot/spring-boot-docker
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.890 s
[INFO] Finished at: 2024-01-23T11:50:16+08:00
[INFO] Final Memory: 30M/97M
[INFO] ------------------------------------------------------------------------

使用docker images命令查看構(gòu)建好的鏡像:

$ [root@zsx spring-boot-docker]# docker images
REPOSITORY                                       TAG       IMAGE ID       CREATED              SIZE
springboot/spring-boot-docker                    latest    b3bb84d4545a   About a minute ago   542MB

springboot/spring-boot-docker 就是我們構(gòu)建好的鏡像,下一步就是運行該鏡像

$ [root@zsx spring-boot-docker]# docker run -d -p 8888:8080 -t springboot/spring-boot-docker
af51b2369945a77a8b96098618b22191fb2b8a1616897c97688ed8183a7da759

啟動完成之后我們使用docker ps查看正在運行的鏡像:

[root@zsx spring-boot-docker]# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
af51b2369945   springboot/spring-boot-docker   "java -Djava.securit…"   48 seconds ago   Up 46 seconds   0.0.0.0:8888->8080/tcp, :::8888->8080/tcp              youthful_margulis

可以看到我們構(gòu)建的容器正在在運行,訪問瀏覽器:http://192.168.136.195:8888/,返回

Hello Docker!

說明使用 Docker 部署 Spring Boot 項目成功!

到此這篇關(guān)于SpringBoot打包成Docker鏡像的幾種實現(xiàn)方式的文章就介紹到這了,更多相關(guān)SpringBoot打包成Docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring如何動態(tài)指定具體實現(xiàn)類

    spring如何動態(tài)指定具體實現(xiàn)類

    這篇文章主要為大家詳細介紹了spring如何動態(tài)指定具體實現(xiàn)類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 解析rainbond以應(yīng)用為中心的架構(gòu)設(shè)計原理

    解析rainbond以應(yīng)用為中心的架構(gòu)設(shè)計原理

    這篇文章主要為大家介紹了rainbond以應(yīng)用為中心的架構(gòu)設(shè)計實現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • springboot結(jié)合websocket聊天室實現(xiàn)私聊+群聊

    springboot結(jié)合websocket聊天室實現(xiàn)私聊+群聊

    本文主要介紹了springboot結(jié)合websocket聊天室實現(xiàn)私聊+群聊,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java Spring 中的監(jiān)聽器Listener詳解與實戰(zhàn)教程

    Java Spring 中的監(jiān)聽器Listener詳解與實戰(zhàn)教程

    Spring 提供了多種監(jiān)聽器機制,可以用于監(jiān)聽?wèi)?yīng)用生命周期、會話生命周期和請求處理過程中的事件,這篇文章主要介紹了Java Spring 之監(jiān)聽器(Listener)詳解與實戰(zhàn),需要的朋友可以參考下
    2025-06-06
  • 如何使用JDBC實現(xiàn)工具類抽取

    如何使用JDBC實現(xiàn)工具類抽取

    這篇文章主要介紹了如何使用JDBC實現(xiàn)工具類抽取,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • MyBatis 添加元數(shù)據(jù)自定義元素標簽的實現(xiàn)代碼

    MyBatis 添加元數(shù)據(jù)自定義元素標簽的實現(xiàn)代碼

    這篇文章主要介紹了MyBatis 添加元數(shù)據(jù)自定義元素標簽的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • java設(shè)計模式--原型模式詳解

    java設(shè)計模式--原型模式詳解

    這篇文章主要為大家詳細介紹了Java設(shè)計模式之Prototype原型模式的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring ApplicationContext接口功能詳細介紹

    Spring ApplicationContext接口功能詳細介紹

    ApplicationContext是Spring應(yīng)用程序中的中央接口,由于繼承了多個組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊監(jiān)聽事件,加載資源文件等
    2023-02-02
  • 一文詳解Java線程安全的集合有哪些

    一文詳解Java線程安全的集合有哪些

    在Java中線程安全的集合類對于多線程編程至關(guān)重要,它們能夠確保在多個線程同時訪問集合時數(shù)據(jù)的一致性和完整性,下面這篇文章主要介紹了Java線程安全集合有哪些的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • SpringBoot2.x版本中,使用SpringSession踩的坑及解決

    SpringBoot2.x版本中,使用SpringSession踩的坑及解決

    這篇文章主要介紹了SpringBoot2.x版本中,使用SpringSession踩的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

平邑县| 林周县| 无棣县| 蕲春县| 崇阳县| 鲁甸县| 贵德县| 石屏县| 剑阁县| 巴林左旗| 利津县| 崇义县| 江华| 城固县| 措美县| 水城县| 斗六市| 左贡县| 天镇县| 安岳县| 澎湖县| 醴陵市| 绥德县| 金湖县| 平湖市| 烟台市| 桐柏县| 哈尔滨市| 永宁县| 怀远县| 东兰县| 通州市| 樟树市| 临海市| 凌源市| 青冈县| 蒲江县| 平顺县| 九龙县| 视频| 甘谷县|