SpringBoot集成Memcached在Docker Compose部署启动失败求助
问题原因及解决方案
核心问题
你把Spring缓存类型配置成了GENERIC,但io.sixhours.memcached-spring-boot-starter需要指定专属的缓存类型,Spring Boot无法自动为GENERIC类型适配Memcached的CacheManager,导致启动时找不到可用的缓存管理器。
具体修复步骤
- 修正缓存类型配置:在
application.properties中把spring.cache.type的值从GENERIC改为memcached,这是该starter对应的缓存类型标识,Spring Boot会自动识别并创建MemcachedCacheManager实例。 - 验证Memcached连接配置:确保Memcached的地址配置正确,因为容器在同一网络
ci_network中,直接用docker-compose里Memcached服务的名称作为主机名,示例配置:spring.memcached.servers=memcached:11211 spring.memcached.connection-timeout=5000 spring.memcached.expiration=3600 - 检查依赖版本兼容性:
memcached-spring-boot-starter:1.3.1适配的是Spring Boot 2.x版本,如果你的应用用了Spring Boot 3.x,需要升级starter到2.x版本(对应Spring Boot 3.x),否则会出现依赖冲突或自动配置失效的问题。 - 确认Docker Compose健康检查有效性:确保Memcached的健康检查确实能判断服务就绪,示例配置如下:
这样能保证应用启动时Memcached已经完全就绪,避免因连接失败导致CacheManager初始化失败。services: memcached: image: memcached:latest networks: - ci_network healthcheck: test: ["CMD", "timeout", "1", "bash", "-c", "cat < /dev/null > /dev/tcp/localhost/11211"] interval: 5s timeout: 3s retries: 5 ted-search: build: . networks: - ci_network depends_on: memcached: condition: service_healthy
内容的提问来源于stack exchange,提问作者Amir Katorza
相关产品推荐
相关产品推荐

