Estou tentando dockerizar minha aplicação Java, que utiliza o Tomcat, e estou enfrentando dificuldades para estabelecer a conexão com o banco de dados PostgreSQL. Já criei um docker-compose.yml
para configurar os contêineres do Tomcat e do PostgreSQL, mas a aplicação não consegue se conectar ao banco de dados. Alguém saberia informar se fiz algo de errado?
Dockerfile
FROM maven:3.3.9-jdk-8 AS build
WORKDIR /opt/app
COPY pom.xml .
RUN mvn -B dependency:resolve-plugins dependency:resolve -Dhttps.protocols=TLSv1.2
COPY src ./src
RUN mvn package -DskipTests -Dhttps.protocols=TLSv1.2
FROM tomcat:9.0-jre8-alpine
RUN rm -r /usr/local/tomcat/webapps && \
apk --no-cache add fontconfig ttf-dejavu tzdata
COPY --from=build /opt/app/target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
docker-compose.yml
version: '3.8'
services:
premiocar:
build: .
ports:
- 8888:8080
environment:
- DATABASE_URL=jdbc:postgresql://db/bd_premiocar
- DATABASE_USERNAME=postgres
- DATABASE_PASSWORD=postgres
- TZ=America/Recife
depends_on:
- db
networks:
- network
db:
image: postgres:15.3
volumes:
- /var/lib/postgresql/data
environment:
- POSTGRES_DB=bd_premiocar
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
networks:
- network
networks:
network:
Erro
premiocar-locadoradeveiculos-premiocar-1 | Caused by: 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.
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:342)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:253)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.Driver.makeConnection(Driver.java:434)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.Driver.connect(Driver.java:291)
premiocar-locadoradeveiculos-premiocar-1 | at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38)
premiocar-locadoradeveiculos-premiocar-1 | ... 116 more
premiocar-locadoradeveiculos-premiocar-1 | Caused by: java.net.ConnectException: Connection refused (Connection refused)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
premiocar-locadoradeveiculos-premiocar-1 | at java.net.Socket.connect(Socket.java:589)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.PGStream.createSocket(PGStream.java:243)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.PGStream.<init>(PGStream.java:98)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:132)
premiocar-locadoradeveiculos-premiocar-1 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:258)
premiocar-locadoradeveiculos-premiocar-1 | ... 121 more