Docker怎么部署SpringBoot项目整合Redis镜像做访问计数

简介

Docker是一种容器化技术,它使开发人员可以使用Docker镜像来简化应用程序的部署。Spring Boot是现代化的Java Web框架,为Java Web应用程序带来新的生命力。Redis是一种高性能的NoSQL内存数据结构存储,它被广泛应用于大型Web应用程序的缓存。在本文中,我们将介绍如何使用Docker和Spring Boot创建一个Docker容器镜像,并在其中添加Redis。此Docker映像将部署我们的Spring Boot应用程序,并整合Redis以进行访问计数。

准备工作

安装Docker

在开始使用Docker之前,必须安装Docke。Mac和Windows用户可以从Docker官方网站下载Docker Desktop。Linux用户可以根据其特定的发行版进行安装。

创建Spring Boot项目

在本文中,我们将在Spring Initializr中创建一个简单的Spring Boot项目。要创建Spring Boot项目,请访问Spring Initializr,然后进行以下设置:

选择“Maven Project”。

选择Java版本。

选择一个Spring Boot版本。

在“Dependencies”中添加如下依赖项:“Spring Web”、“Spring Boot DevTools”、“Spring Data Redis”。

完成上述设置后,单击“Generate”按钮将项目下载到本地计算机上。

安装Redis

要在Docker中安装Redis,请执行以下步骤:

从Docker Hub下载Redis Docker映像。要执行此操作,请打开终端并键入以下命令:

docker pull redis

创建一个Redis容器。要执行此操作,请键入以下命令:

docker run -d redis

此命令将在Docker中创建一个名为Redis的容器。

创建Dockerfile文件

要创建Dockerfile文件,请执行以下操作:

在Spring Boot项目根目录下创建一个名为Dockerfile的文件。

将以下代码复制并粘贴到Dockerfile文件中:

FROM openjdk:8-jdk-alpine

VOLUME /tmp

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

此Dockerfile文件将:

使用OpenJDK 8作为基础映像。

创建一个名为/app.jar的卷。

使用变量JAR_FILE来复制Spring Boot可执行文件。

设置应用程序的入口点。

在Spring Boot项目的根目录中打开终端。

键入以下命令来构建Docker映像:

docker build -t spring-boot-redis .

请注意,这里的“.”表示当前目录。您需要确保打开了Spring Boot项目的根目录。

构建完成后,键入以下命令来启动Docker容器:

docker run -p 8080:8080 spring-boot-redis

此命令将在端口8080上启动Spring Boot应用程序,并将其映射到Docker主机的8080端口。

整合Redis实现访问计数

要在Spring Boot应用程序中整合Redis,请执行以下操作:

添加Redis依赖项

要使用Redis,我们需要将Redis依赖项添加到Spring Boot项目中。在pom.xml文件中添加以下代码:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

创建Redis配置文件

要连接到Redis,我们需要在Spring Boot应用程序中创建一个Redis配置文件。

在src/main/java目录下创建一个名为config的包。

在config包中创建一个名为RedisConfig.java的类。

将以下代码复制并粘贴到RedisConfig.java文件中:

package com.example.demo.config;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.data.redis.connection.RedisConnectionFactory;

import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration

public class RedisConfig {

@Value("${spring.redis.host}")

private String redisHostName;

@Value("${spring.redis.port}")

private int redisPort;

@Bean

public RedisTemplate<String, Integer> redisTemplate(RedisConnectionFactory connectionFactory) {

RedisTemplate<String, Integer> redisTemplate = new RedisTemplate<String, Integer>();

redisTemplate.setConnectionFactory(connectionFactory);

redisTemplate.setKeySerializer(new StringRedisSerializer());

redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Integer.class));

redisTemplate.afterPropertiesSet();

return redisTemplate;

}

@Bean

public RedisConnectionFactory redisConnectionFactory() {

JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();

redisConnectionFactory.setHostName(redisHostName);

redisConnectionFactory.setPort(redisPort);

return redisConnectionFactory;

}

}

此配置文件将:

自动装配RedisConnectionFactory。

创建一个RedisTemplate对象,它使用String作为键和Integer作为值。

设置StringRedisSerializer和Jackson2JsonRedisSerializer作为RedisTemplate的key和value序列化器。

创建一个名为redisConnectionFactory的Bean,用于创建Redis连接。

在application.properties文件中添加以下内容:

spring.redis.host=localhost

spring.redis.port=6379

此应用程序将连接到Redis主机的默认端口。确保使用实际的Redis主机名称和端口。

添加Redis计数器代码

要实现基于Redis的访问计数器,请执行以下操作:

在src/main/java目录中创建一个名为model的包。

在model包中创建一个名为Counter.java的类:

package com.example.demo.model;

import java.io.Serializable;

public class Counter implements Serializable {

private static final long serialVersionUID = 1L;

private String key;

private int count;

public String getKey() {

return key;

}

public int getCount() {

return count;

}

public void setKey(String key) {

this.key = key;

}

public void setCount(int count) {

this.count = count;

}

}

在src/main/java目录中创建一个名为controller的包。

在controller包中创建一个名为CounterController.java的类。

将以下代码复制并粘贴到CounterController.java文件中:

package com.example.demo.controller;

import com.example.demo.model.Counter;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.core.ValueOperations;

import org.springframework.web.bind.annotation.GetMapping;

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

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

@RestController

@RequestMapping("/counter")

public class CounterController {

@Autowired

private RedisTemplate<String, Integer> redisTemplate;

@GetMapping

public Counter getCounter() {

ValueOperations<String, Integer> valueOps = redisTemplate.opsForValue();

String key = "counter";

Integer count = valueOps.get(key);

if (count == null) {

count = 0;

}

valueOps.set(key, count + 1);

Counter counter = new Counter();

counter.setKey(key);

counter.setCount(count + 1);

return counter;

}

}

此代码将:

自动装配RedisTemplate对象。

定义了一个名为“/counter”的GET方法。

在Redis中获取访问计数器的值。

如果计数器不存在,则将其初始化为零。

将新值增加1,并将其保存回Redis。

返回一个Counter对象,其中包含计数器键和计数器的当前值。

运行应用程序和Redis容器

要在Docker中部署Spring Boot应用程序和Redis容器,请执行以下步骤:

在Spring Boot项目的根目录中打开终端。

键入以下命令来构建Spring Boot Docker映像:

docker build -t spring-boot-redis .

构建完成后,键入以下命令来启动Spring Boot Docker容器(请注意,这里的“.”表示当前目录。):

docker run -p 8080:8080 spring-boot-redis

在另一个终端窗口中,键入以下命令来启动Redis Docker容器:

docker run -d redis

现在,您可以打开Web浏览器并访问"http://localhost:8080/counter" URL,以查看Redis计数器的值。

总结

本文介绍了如何使用Docker和Spring Boot创建Docker容器映像,并在其中添加Redis以进行访问计数。我们还展示了如何使用Redis配合Spring Boot实现访问计数。此应用程序可在Docker容器中进行部署,并提供适用于现代Web应用程序的可扩展和高性能的访问计数器。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签