Saltar al contenido

Conexión de Docker Compose + Spring Boot + Postgres

Solución:

Cada contenedor tiene su propia interfaz de red con su propio localhost. Entonces, cambie la forma en que Java apunta a Postgres:

spring.datasource.url=jdbc:postgresql://localhost:5432/sample

Para:

spring.datasource.url=jdbc:postgresql://db:5432/sample

db se resolverá en la IP de Postgres adecuada.


Prima. Con docker-compose no necesita crear su imagen a mano. Así que cambia:

web:
  image: myuser/manager:latest

Para:

web:
  build: .

Tuve el mismo problema y perdí algo de tiempo para entender y resolver este problema:

org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

Muestro todas las propiedades para que todo el mundo entienda.
application.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL82Dialect
spring.jpa.hibernate.ddl-auto=update

docker-compose.yml:

  version: "3"
  services:
    springapp:
      build: .
      container_name: springapp
      environment:
        SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/testdb
      ports:
        - 8000:8080
      restart: always
      depends_on:
        - db
    db:
      image: postgres
      container_name: db
      environment:
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=postgres
        - POSTGRES_DB=testdb
        - PGDATA=/var/lib/postgresql/data/pgdata
      ports:
        - 5000:5432
      volumes:
        - pgdata:/var/lib/postgresql/data
      restart: always
  volumes:
    pgdata:

Para iniciar la aplicación de primavera con la base de datos local, usamos url localhost.
Para conectarnos al contenedor con la base de datos, necesitamos cambiar ‘localhost’ en su servicio de base de datos, en mi caso ‘localhost‘ para ‘db‘.

Solución: agregar SPRING_DATASOURCE_URL medio ambiente en docker-compose.yml que reescribir spring.datasource.url valor para conectar:

  environment:
    SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/testdb

Espero que esto ayude a alguien a ahorrar su tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *