在分布式开发场景中,Java服务常需要和Redis配合使用实现缓存、会话共享等功能,传统手动安装环境容易出现版本不兼容、依赖缺失的问题,用Docker容器部署可以快速搭建标准化环境,下面我们一步步完成配置。

一、前置准备:安装Docker环境
首先需要在本地或服务器上安装Docker,不同系统安装方式略有差异,这里以Linux系统为例,执行以下命令快速安装:
# 安装Docker依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker软件源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker引擎 sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动Docker服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 验证Docker是否安装成功 docker --version
二、部署Redis环境
Redis官方提供了标准的Docker镜像,我们可以直接拉取对应版本使用,步骤如下:
1. 拉取Redis镜像
执行以下命令拉取最新的Redis稳定版镜像:
docker pull redis:latest
2. 启动Redis容器
启动Redis容器时,我们可以映射端口、设置密码,方便后续Java服务连接:
# 启动Redis容器,映射6379端口,设置密码为redis123,容器名为my-redis docker run -d -p 6379:6379 --name my-redis redis:latest redis-server --requirepass redis123
启动后可以用以下命令验证Redis是否正常运行:
# 进入Redis容器 docker exec -it my-redis /bin/bash # 连接Redis客户端 redis-cli # 输入密码验证 auth redis123 # 执行ping命令,返回PONG说明正常 ping
三、部署Java环境
Java环境我们可以选择官方OpenJDK镜像,根据项目需求选择对应的JDK版本,这里以JDK11为例:
1. 拉取OpenJDK镜像
docker pull openjdk:11
2. 启动Java容器并测试连通性
先启动一个临时Java容器,验证是否能连接到刚才部署的Redis服务:
# 启动临时Java容器,命名为my-java,进入交互模式 docker run -it --name my-java --link my-redis:redis-host openjdk:11 /bin/bash
进入容器后,我们可以用Java代码简单测试Redis连接,首先创建一个测试类:
import redis.clients.jedis.Jedis;
public class RedisTest {
public static void main(String[] args) {
// 连接Redis,这里使用link配置的别名redis-host,端口6379
Jedis jedis = new Jedis("redis-host", 6379);
// 认证密码
jedis.auth("redis123");
// 测试连接
System.out.println("连接成功,Redis服务返回:" + jedis.ping());
// 设置测试键值
jedis.set("test_key", "hello_docker");
// 获取键值
String value = jedis.get("test_key");
System.out.println("获取到的值:" + value);
jedis.close();
}
}在容器中编译运行这段代码前,需要先下载Jedis依赖包,执行以下命令:
# 下载Jedis jar包到当前目录 curl -O https://ipipp.com/repo/redis/clients/jedis/3.9.0/jedis-3.9.0.jar # 编译Java文件 javac -cp jedis-3.9.0.jar RedisTest.java # 运行测试类 java -cp .:jedis-3.9.0.jar RedisTest
如果输出连接成功和对应的键值,说明Java和Redis在Docker容器中已经正常连通。
四、分布式场景下的环境使用建议
如果是多个Java服务需要连接同一个Redis,不需要每个容器都单独部署Redis,只需要让所有Java容器通过--link参数关联同一个Redis容器,或者使用Docker自定义网络实现容器间互通即可。另外建议将Redis的持久化配置、Java服务的日志目录通过-v参数挂载到宿主机,避免容器重启后数据丢失。
| 组件 | 容器名称 | 映射端口 | 核心配置 |
|---|---|---|---|
| Redis | my-redis | 6379:6379 | 密码redis123,开启AOF持久化 |
| Java | my-java | 无对外映射(内部互联) | 关联redis-host别名,JDK11环境 |
注意:生产环境部署时,建议给Redis设置更复杂的密码,并且不要直接暴露Redis端口到公网,避免被恶意访问。
以上就是Docker容器中部署Java与Redis环境的完整流程,按照步骤操作可以快速搭建出适合分布式开发的稳定环境,后续如果有新的服务需要接入,只需要复用已有的Redis容器或者扩展Java容器即可,大幅降低环境配置的成本。