springboot-集成docker

<?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.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>cn.stevekung</groupId>
	<artifactId>spring-boot-docker</artifactId>
	<version>0.0.1</version>
	<name>spring-boot-docker</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<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>
			<!--<exclusions>-->
				<!--<exclusion>-->
					<!--<groupId>org.junit.vintage</groupId>-->
					<!--<artifactId>junit-vintage-engine</artifactId>-->
				<!--</exclusion>-->
			<!--</exclusions>-->
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- Docker maven plugin -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>1.0.0</version>
				<configuration>
					<!-- 指定Docker镜像完整名称 -->
					<imageName>
						${docker.image.prefix}/${project.artifactId}
					</imageName>
					<!-- 指定dockerfile文件所在目录 -->

					<dockerDirectory>src/main/java/cn/stevekung</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

Dockerfile

### 使用Docker 提供的Java镜像
FROM java
### 作者信息:用户名 + 邮箱
MAINTAINER "steve"stevekung98@163.com
### 拷贝文件并且重命名为app.jar
ADD spring-boot-docker-0.0.1.jar app.jar
### 将8080端口设置为可暴露的接口
EXPOSE 8080
### 使用java -jar启动项目
CMD java -jar app.jar

docker images

docker run

 

将 JDK 和 Springboot项目 一起打包到一个容器中 启动容器

### Spring Boot 集成 Docker Java 库以实现容器操作 要在 Spring Boot 项目集成 Docker Java 庢库并实现容器操作,可以按照以下方法完成配置和功能开发。 #### 添加依赖项 首先,在项目的 `pom.xml` 文件中引入 Docker Java 的 Maven 依赖项。以下是具体的依赖声明: ```xml <dependency> <groupId>com.github.docker-java</groupId> <artifactId>docker-java</artifactId> <version>3.2.14</version> <!-- 版本号可以根据实际需求调整 --> </dependency> ``` 此部分描述了如何通过 Maven 构建工具来管理 Docker Java 库的依赖关系[^3]。 #### 创建 Docker 客户端实例 为了与 Docker Daemon 进行交互,需要创建一个 `DockerClient` 实例。可以通过以下代码片段展示其初始化过程: ```java import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.core.DockerClientBuilder; public class DockerService { public static void main(String[] args) { // 初始化 Docker Client DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://localhost:2375").build(); // 测试连接状态 System.out.println(dockerClient.infoCmd().exec()); } } ``` 上述代码展示了如何构建一个基于 TCP 协议的客户端连接至本地运行的 Docker 服务,并执行基础的信息查询命令[^4]。 #### 使用 Sleuth 跟踪日志(可选) 如果希望在分布式环境中跟踪请求链路,则可以在现有基础上加入 Spring Cloud Sleuth 支持。这一步骤已在提供的引用材料中有提及[^1]。具体做法是在 `pom.xml` 中增加如下依赖项: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> ``` 这样能够帮助开发者更好地监控涉及多个微服务之间的调用行为。 #### 自动生成测试数据(扩展阅读) 对于某些场景下可能还需要模拟随机输入或者伪造实体对象等情况时,可以考虑利用第三方类库辅助完成任务。例如 BeanMother、FixtureFactory 或者 JFairy 等工具都可以满足此类需求[^2]。不过这些内容并不直接关联于当前主题——即关于如何将 Docker-Java 整合进 Spring Boot 工程当中去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值