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;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello docker ";
}
}
也即 项目启动后 直接访问 ip:端口/hello 即可
Dockerfile 编写
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["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 代码
@RestController
public class HelloController {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("/hello")
public String hello() {
Long count = stringRedisTemplate.opsForValue().increment("count");
return "hello,the count is :" + count;
}
}
配置文件
server:
port: 8080
spring:
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
```yaml
version: "3.0"
services:
web:
build: .
ports:
- "8080:8080"
links:
- redis
redis:
image: redis
2.4 构建、运行
将SpringBoot 项目打包,和 Dockerfile,docker-compose.yml 一并上传到同一个目录下
后台构建
docker-compose up -d ```
- 运行
构建后使用docker ps
查看下对应打包后的镜像名称,然后docker run -itd 镜像名称
运行 - 测试,ip:端口/hello
每次刷新请求 count 值都会发生变化