1.SpringBoot-docker-hello
1.1 项目说明
主要通过 Dockerfile 自定义运行 简易 SpringBoot 项目。只要能访问到项目内,并输出指定内容即可
1.2 步骤
- 编写简易 springboot 项目
- 打包
- 编写 Dockerfile
- 上传,构建
- 运行
1.3 主要内容
编写简易 springboot 项目
只需要在创建 springboot 项目时,加上 web 依赖即可
<?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><groupId>com.example</groupId><artifactId>springboot-docker-hello-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-docker-hello-demo</name><description>springboot-docker-hello-demo</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.7.RELEASE</spring-boot.version></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-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.7.RELEASE</version><configuration><mainClass>com.example.demo.SpringbootDockerHelloDemoApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
controller 层代码
package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController {@RequestMapping("/hello")public String hello(){return "hello docker ";}}
也即 项目启动后 直接访问 ip:端口/hello 即可
Dockerfile 编写
FROM java:8COPY *.jar /app.jarCMD ["--server.port=8080"]EXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]
以上内容就是将 项目同目录下的 jar 后缀都一并编译打包成一个全新的 jar 包,包名为 app.jar,并且向外暴露 8080 端口
1.4 构建,运行
构建
docker build -t 自定义容器名 .
运行
docker run -d 自定义容器名
查看
docker ps//查看到该容器分配的端口信息
测试
第一种方法(本地测试):
curl localhost:端口/hello>>hello docker
第二种方法:(浏览器测试):
该方法如果是远程,记得开启防火墙相关端口

2.springboot-redis-compose
2.1 项目说明
主要测试使用 docker-compose 一次性编排 多个 docker。
本次项目是结合 springBoot web 和 redis。在浏览器每次刷新都会都有一次计数器
2.2 步骤
- 编写简易项目(代码,配置文件)
- 打包SpringBoot 项目
- 编写Dockerfile
- 编写 docker-compose.yml
- 上传,编译,运行镜像
2.3 主要内容
SpringBoot 项目内容
Java 代码
@RestControllerpublic class HelloController {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@RequestMapping("/hello")public String hello() {Long count = stringRedisTemplate.opsForValue().increment("count");return "hello,the count is :" + count;}}
配置文件
server:port: 8080spring:redis:host: redis #此处不能省略,省略就默认用 localhost,后续 项目是连接 redis 容器,需要用容器名称连接
pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
Dockerfile
```dockerfile FROM java:8
COPY *.jar /app.jar
EXPOSE 8080
CMD [“—server.port=8080”]
ENTRYPOINT [“java”,”-jar”,”/app.jar”]
- docker-compose.yml```yamlversion: "3.0"services:web:build: .ports:- "8080:8080"links:- redisredis:image: redis
2.4 构建、运行
将SpringBoot 项目打包,和 Dockerfile,docker-compose.yml 一并上传到同一个目录下
后台构建
docker-compose up -d ```
- 运行
构建后使用docker ps查看下对应打包后的镜像名称,然后docker run -itd 镜像名称运行 - 测试,ip:端口/hello

每次刷新请求 count 值都会发生变化
