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