【发布时间】:2021-12-23 02:35:35
【问题描述】:
我在从 Spring Boot 应用程序连接到 Docker 容器内的 Redis 时遇到问题。我试图将保护模式更改为 no 并更改 redis 中的绑定,但它对我不起作用。我还尝试将redis主机从'localhost'更改为'redis',但它也不起作用。我正在尝试将我的应用程序 dockerize 很长时间,这就是我寻求帮助的原因。顺便说一句,我正在使用 Jedis。
上次的日志有一些问题:
Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource [org/springframework/boot/autoconfigure/session/RedisSessionConfiguration$SpringBootRedisHttpSessionConfiguration.class]: Invocation of init method failed; Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost/<unresolved>:6379 java.net.ConnectException: Connection refused
你可以在这里找到我的代码: https://github.com/CommoMegaSator/Versatile-Development
这是我的 docker-compose 文件:
version: "3.7"
services:
postgresql:
image: postgres:latest
container_name: postgresql
volumes:
- /opt/postgres-data:/var/lib/postgresql/data
ports:
- "3001:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=versatile
- POSTGRES_SCHEMA=main
restart: on-failure
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
expose:
- 3001
networks:
- versatile
redis:
image: redis:latest
container_name: redis
command: [ "redis-server", "--protected-mode", "no", "--bind", "0.0.0.0" ]
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_DISABLE_COMMANDS=FLUSHDB, FLUSHALL
restart: on-failure
ports:
- "3002:6379"
networks:
- versatile
versatile:
image: versatile
build:
context: .
container_name: versatile
ports:
- "3000:8081"
restart: on-failure
links:
- redis
- postgresql
depends_on:
- redis
- postgresql
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/versatile
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=postgres
- SPRING_DATASOURCE_HIKARI_SCHEMA=main
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
expose:
- 8081
networks:
- versatile
networks:
versatile:
driver: bridge
还有我的 application.properties:
#Spring DATASOURCE
spring.datasource.driver-class-name = org.postgresql.Driver
spring.datasource.url = jdbc:postgresql://localhost:5432/versatile
spring.datasource.hikari.schema=main
spring.datasource.username = postgres
spring.datasource.password = postgres
flyway.createSchemas=true
spring.flyway.schemas=main
#Spring JPA properties
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true
spring.jpa.show-sql = false
#Redis properties
spring.session.store-type = redis
spring.session.redis.flush-mode = on_save
spring.session.redis.namespace = spring:session
spring.cache.type = redis
spring.redis.host = localhost
spring.redis.password =
spring.redis.port = 6379
【问题讨论】:
-
请在您的问题中添加一个可重现的最小示例,不要指望这里的人通过您的整个代码进行故障排除
标签: spring-boot docker docker-compose redis jedis