Spring-boot + Docker-Compose + PostgreSQL

olá, pessoal
Estou tentando subir uma aplicação docker-compose de 3 containers:

  • um front-end JSF
  • um back-end com spring-boot
  • postgreSQL na base

segue o docker-compose.yml
version: “3.5”
services:
db:
image: postgres:9.5
environment:
- POSTGRES_PASSWORD=passwd
- POSTGRES_USER=rafael
- POSTGRES_DB=bd_app
ports:
- 5432:5432

backend:
build: back-end
links:
- db
depends_on:
- db
ports:
- 8989:8080

 frontend:
build: front-end
depends_on:
  - backend
ports:
  - 8080:8080

O back-end como disse é uma app spring-boot, segue o dockerfile dela (eu instalo o maven no container e copio o pom.xml e a pasta src para o container, depois executo mvn clean package)

    FROM openjdk:8 AS Builder
    RUN apt-get update
    RUN apt-get install -y maven
    COPY pom.xml /app/pom.xml
    COPY src /app/src
    WORKDIR /app
    RUN mvn clean package
    
    FROM openjdk:8
    WORKDIR /deployed-app
    COPY --from=Builder /app/target/back-end.jar .
    #ADD target/back-end.jar .
    ENTRYPOINT ["java", "-jar", "back-end.jar"]    

e o application.properties

# JPA PROPS
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy

spring.datasource.initialization-mode=always
spring.datasource.initialize=true
spring.datasource.continue-on-error=true
# APPLICAITON CONTEXT PATH
server.servlet.context-path=/app-backend
spring.datasource.url=jdbc:postgresql://db:5432/bd_app
spring.datasource.username=rafael
spring.datasource.password=passwd

e o dockerfile do front-end JSF (imagem wildfly)

FROM openjdk:8 AS Builder
LABEL key="https://finalexception.blogspot.com"
RUN apt-get update
RUN apt-get install -y maven
COPY pom.xml /app/pom.xml
COPY src /app/src
WORKDIR /app
RUN mvn clean package

FROM jboss/wildfly
EXPOSE 8080
WORKDIR /opt/jboss/wildfly/standalone/deployments/
COPY --from=Builder /app/target/front-end.war .

Ao executar o comando docker-compose up pra subir o projeto, o backend não acha o host do postgresql e dispara:
java.net.UnknownHostException: db

por default, cada container no docker-compose faz parte da mesma rede e pode descobrir o outro pelo nome em que o mesmo é declarado no docker-compose.yml. Então o container do postgres, que se chama db no docker-compose deveria ser acessível do back-end pela url:
jdbc:postgresql://db:5432/bd_app

alguém sabe como reoslver isso?
repositório da minha aplicação https://github.com/RafaelAPNascimento/application

Mas, subindo o container do db, você consegue acessar via pgadmin ou similar?

Rafael_Nascimento
Resolveu seu problema?
Estou passando pelo mesmo problema e não achando o detalhe…

Sempre que postar uma dúvida na internet, responda com seus avanços para ajudar outras pessoas…