八、springboot 简单优雅的通过 docker-compose 构建
在 pom.xml 文件中增加 Redis 的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在 application.properties 中存在 redis 连接信息。
#配置 redis
Redis 数据库索引(默认为 0)
spring.redis.database=0
Redis 服务器地址
spring.redis.host=192.168.252.53
Redis 服务器连接端口
spring.redis.port=6389
Redis 服务器连接密码(默认为空)
spring.redis.password=
连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0
配置好了,我们还是说一下简单使用,这些在之前也有讲,代码也是差不多的。我们在 controller 层创建一个 redis 包,在 Redis 包下创建一个 RedisController 类。
代码如下:
@RestController
@RequestMapping("/redis")
@Slf4j
public class RedisController {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping(value = "/add",method = RequestMethod.GET)
public String add(@RequestParam(value="key")String key,@RequestParam(value = "value") String value){
ValueOperations ops=stringRedisTemplate.opsForValue();
ops.set(key,value);
return "success";
}
@RequestMapping(value = "/get",method = RequestMethod.GET)
public String get(@RequestParam(value = "key")String key){
ValueOperations ops=stringRedisTemplate.opsForValue();
return (String) ops.get(key);
}
}
好了项目整合 Redis 就这么多了,至于测试我们待会后面部署好了一起测试。接下来开始重头戏。
================================================================================
我们现在有一个 springboot 项目,现在怎么构建成一个镜像放在服务器上运行呢?
我们一步步来,首先是增加配置。
还是我们熟悉的 pom.xml 我们需要在 pom.xml 中 build–>plugins 中增加配置:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>{project.artifactId}:${project.version}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory>
<dockerHost>http://127.0.0.1:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
上面都有注释没有什么好讲的,其中指定生成镜像名的 ${docker.image.prefix} 的值在 properties 中配置。
我们在项目的 src–>main 创建一个 docker 包,包下创建一个 Dockerfile 问价 ,内容如下:
FROM java:8
VOLUME /tmp
ADD zlflovemm-1.0.0.jar zlflovemm-1.0.0.jar
ENTRYPOINT ["java","-jar","/zlflovemm-1.0.0.jar"]
接下来我们使用 maven package 打包,就可以将项目打包成镜像并发送到我们配置的服务器上。可以看到我们的镜像已经到我们的服务器了。
我们现在项目镜像有了,现在需要通过 docker-compose.yml 将项目,mysql .redis 都管理起来。
我们创建一个 docker-compose.yml 内容如下:
version: "3"
services:
webapp:
image: quellanan/zlflovemm:1.0.0
ports:
"9001:9090"
volumes:
"/data"
depends_on:
redis
mysql
redis:
image: redis:latest
restart: always
ports:
"6389:6379"
volumes:
/redis/redis.conf:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:latest
restart: always
评论