深圳做网站那家公司好10岁一12岁的创意手工
深圳做网站那家公司好,10岁一12岁的创意手工,软件开发项目管理软件哪个好,怎么更改网站的备案号#x1f343; 予枫#xff1a;个人主页#x1f4da; 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》#x1f4bb; Debug 这个世界#xff0c;Return 更好的自己#xff01; 做Spring BootRedisDocker Compose开发时#xff0c;你是不是也踩过“IP变更导致Redis… 予枫个人主页 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》 Debug 这个世界Return 更好的自己做Spring BootRedisDocker Compose开发时你是不是也踩过“IP变更导致Redis连接失败”的坑手动指定容器IP繁琐又易出错其实Compse自带网络机制只需简单配置就能让Spring Boot通过“服务名”直接访问Redis无需关注IP变化。本文从原理到实操手把手教你搞定容器间服务发现与通信新手也能快速上手建议点赞收藏备用文章目录一、COMPOSE网络核心原理极简科普二、SPRING BOOT连接REDIS的痛点分析三、实战COMPOSE中通过服务名连接REDIS完整步骤3.1 环境准备必看3.2 编写docker-compose.yml核心配置关键配置说明重点划重点3.3 编写Spring Boot配置文件application.yml3.4 编写Spring Boot测试接口验证连接3.5 构建并启动服务实操步骤四、常见问题排查避坑指南4.1 连接超时Could not connect to Redis4.2 密码错误Authentication failed4.3 Spring Boot启动成功但无法访问接口五、总结一、COMPOSE网络核心原理极简科普Docker Compose在启动容器时会自动创建一个默认网络默认名称为“项目名_default”同一个网络下的所有容器无需额外配置就能实现互联互通。核心亮点就是「服务名映射」Compose会将docker-compose.yml中定义的每个service名称自动映射为对应容器的“主机名”容器间可以直接通过“服务名”相互访问底层会由Compose自动解析为对应容器的IP地址。✨ 关键提醒这也是为什么我们不用记IP的核心原因——Compose帮我们做了“IP→服务名”的自动解析哪怕容器重启后IP变化服务名映射也会自动更新彻底告别IP变更的烦恼。二、SPRING BOOT连接REDIS的痛点分析在没有使用Compose网络时Spring Boot连接Redis通常有两个麻烦手动指定Redis容器IP需要先查看Redis容器的IPdocker inspect 容器ID再在Spring Boot配置文件中填写步骤繁琐IP易变导致连接失败容器重启、重新部署后IP可能会发生变化一旦变化Spring Boot就会报“连接超时”错误需要重新修改配置非常影响开发效率。而借助Compose的服务名通信机制就能一次性解决这两个痛点配置简单且一劳永逸。三、实战COMPOSE中通过服务名连接REDIS完整步骤下面我们用最简洁的实操实现Spring Boot通过服务名连接Redis全程可复制建议跟着动手操作一遍印象更深刻记得点赞收藏避免后续找不到。3.1 环境准备必看已安装Docker和Docker Compose无需额外安装RedisCompose会自动拉取镜像已创建Spring Boot项目需引入Redis依赖基础开发工具IDEA、Maven/Gradle。3.2 编写docker-compose.yml核心配置在Spring Boot项目根目录下创建docker-compose.yml文件核心是定义Spring Boot和Redis两个服务确保它们在同一个网络下默认网络即可无需额外创建。# docker-compose.yml 完整配置可直接复制version:3.8# 兼容大多数Docker版本services:# Redis服务服务名定为redis关键Spring Boot将通过这个名称连接redis:image:redis:7.0# 指定Redis镜像版本稳定不易错container_name:redis-container# 容器名称可选方便查看ports:-6379:6379# 端口映射本地可通过6379访问Redis可选environment:-REDIS_PASSWORD123456# Redis密码建议设置更安全restart:always# 容器重启策略意外停止后自动重启networks:-default# 加入默认网络可省略默认就是加入default网络# Spring Boot服务服务名可自定义这里定为springboot-redis-demospringboot-redis-demo:build:.# 构建当前目录下的Spring Boot项目需确保根目录有Dockerfilecontainer_name:springboot-containerports:-8080:8080# 端口映射本地可通过8080访问Spring Boot项目depends_on:-redis# 关键配置指定依赖redis服务确保Redis先启动environment:-SPRING_REDIS_HOSTredis# 核心Redis主机名Redis服务名必须和上面的redis服务名一致-SPRING_REDIS_PASSWORD123456# 与Redis的密码一致-SPRING_REDIS_PORT6379# Redis端口默认6379restart:alwaysnetworks:-default# 加入默认网络与Redis在同一个网络下# 网络配置可省略Compose会自动创建default网络networks:default:driver:bridge关键配置说明重点划重点services.redisRedis服务的服务名是redis这是Spring Boot连接Redis的“关键标识”后续Spring Boot配置文件中Redis的主机名必须和这个服务名一致depends_on: - redis确保Compose启动时先启动Redis服务再启动Spring Boot服务避免Spring Boot启动时Redis还未就绪导致连接失败SPRING_REDIS_HOSTredis核心中的核心这里的redis不是IP而是上面定义的Redis服务名Compose会自动将这个服务名解析为Redis容器的IP地址。3.3 编写Spring Boot配置文件application.yml无需填写Redis的IP只需指定服务名、密码和端口配置如下可直接复制# application.ymlserver:port:8080# 与docker-compose.yml中Spring Boot的端口一致spring:redis:host:redis# 必须和docker-compose.yml中Redis的服务名一致重中之重port:6379password:123456# 与docker-compose.yml中Redis的密码一致timeout:3000ms# 连接超时时间可选lettuce:pool:max-active:8# 连接池最大连接数可选max-idle:8# 连接池最大空闲连接数可选min-idle:0# 连接池最小空闲连接数可选3.4 编写Spring Boot测试接口验证连接为了验证Spring Boot是否能成功通过服务名连接Redis我们编写一个简单的测试接口实现“存入数据读取数据”的功能。importorg.springframework.data.redis.core.StringRedisTemplate;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;importjavax.annotation.Resource;RestControllerpublicclassRedisTestController{// 注入StringRedisTemplate操作RedisResourceprivateStringRedisTemplatestringRedisTemplate;// 存入数据http://localhost:8080/set/key/valueGetMapping(/set/{key}/{value})publicStringsetKey(PathVariableStringkey,PathVariableStringvalue){stringRedisTemplate.opsForValue().set(key,value);returnsuccess已存入数据【keyvalue】;}// 读取数据http://localhost:8080/get/keyGetMapping(/get/{key})publicStringgetKey(PathVariableStringkey){StringvaluestringRedisTemplate.opsForValue().get(key);return读取成功【keyvalue】;}}3.5 构建并启动服务实操步骤编写Spring Boot的Dockerfile放在项目根目录与docker-compose.yml同级FROM openjdk:17-jdk-slim # 基础镜像根据自己的JDK版本调整 WORKDIR /app COPY target/*.jar app.jar # 复制打包后的jar包需先执行mvn package打包 EXPOSE 8080 ENTRYPOINT [java, -jar, app.jar]打包Spring Boot项目执行mvn clean package确保target目录下生成jar包启动Compose服务在项目根目录执行命令docker-compose up -dCompose会自动拉取Redis镜像、构建Spring Boot镜像并启动两个容器验证连接访问http://localhost:8080/set/test/helloRedis返回“success已存入数据【testhelloRedis】”说明存入成功访问http://localhost:8080/get/test返回“读取成功【testhelloRedis】”说明Spring Boot成功通过服务名连接到Redis 恭喜到这里你就已经搞定了Compose网络下Spring Boot与Redis的服务名通信再也不用记繁琐的IP地址了。四、常见问题排查避坑指南实操过程中可能会遇到连接失败的情况这里整理了3个最常见的问题帮你快速排查建议收藏踩坑时直接对照4.1 连接超时Could not connect to Redis排查1检查docker-compose.yml中Spring Boot的SPRING_REDIS_HOST是否与Redis的服务名一致必须完全一致区分大小写排查2检查两个服务是否在同一个网络下默认都是default网络若自定义网络需确保两个服务都加入同一个网络排查3检查depends_on: - redis配置是否存在避免Spring Boot先于Redis启动。4.2 密码错误Authentication failed排查确保Spring Boot配置文件中的spring.redis.password与docker-compose.yml中Redis的REDIS_PASSWORD一致不要多空格、少字符。4.3 Spring Boot启动成功但无法访问接口排查1检查docker-compose.yml中Spring Boot的端口映射是否正确8080:8080本地端口未被占用排查2检查容器是否启动成功执行docker-compose ps查看两个容器的状态是否为“Up”排查3检查Spring Boot日志执行docker logs -f springboot-container查看是否有报错信息。五、总结本文核心讲解了Docker Compose网络中Spring Boot通过“服务名”连接Redis的原理与实操核心要点总结3点Compose会自动创建默认网络同一网络下的容器可通过服务名互联互通核心配置是“Spring Boot的Redis主机名Redis服务名”这是实现服务发现的关键配合depends_on配置确保Redis先于Spring Boot启动避免连接失败。通过这种方式我们可以彻底告别手动指定IP的繁琐解决IP变更导致的连接问题提升开发和部署效率。无论是开发环境还是测试环境这种方案都非常实用。我是予枫专注分享后端实操干货关注我下期带你解锁更多Docker Compose实战技巧如果本文对你有帮助记得点赞收藏有疑问可以在评论区留言我会一一回复