我正在尝试在 docker compose 文件中启动我的 spring boot 微服务项目。
提供的用户:postgres
提供的密码:密码
当我尝试将服务与 postgres db 连接时,控制台显示:
2023-05-07 10:30:48 2023-05-07T07:30:48.725Z INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2023-05-07 10:30:49 2023-05-07T07:30:49.863Z ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
2023-05-07 10:30:49
2023-05-07 10:30:49 org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
...
但我完全确定通过的凭据是正确的。
与此同时,我尝试连接的 docker 容器说的是
2023-05-07 10:30:51 2023-05-07 07:30:51.287 UTC [41] DETAIL: Role "postgres" does not exist.
2023-05-07 10:30:51 Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
如果我尝试创建名为“postgres”的用户,postgresql 控制台会告诉我它已经存在;
docker-compose.yml 文件
postgres-order:
container_name: postgres-order
image: postgres
environment:
POSTGRES_DB: order_service
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
PGDATA: /data/postgres
volumes:
- ./postgres-order:/data/postgres
ports:
- "5431:5431"
command: -p 5431
expose:
- "5431"
restart: always
order-service:
container_name: order-service
image: registry.hub.docker.com/jirafus400/order-service:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres-order:5431/order_service
depends_on:
- postgres-order
- broker
- eureka-server
- api-gateway
application-docker.properties 文件
spring.datasource.url=jdbc:postgresql://postgres-order:5431/order_service
spring.datasource.username=postgres
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka:password@eureka-server:8761/eureka
spring.kafka.bootstrap-servers=broker:29092
解决了。问题是卷是使用不同的 postgres 凭据创建的。在我更改凭据后,它们不匹配。刚刚删除卷,一切正常。