Parte 2:
docker-compose:
version: "3.8"
services:
banking-validation:
build:
context: .
dockerfile: Dockerfile
image: rgdp/banking-validation:v1
container_name: banking-validation-container
environment:
- QUARKUS_KAFKA_HOST=kafka-alura
- QUARKUS_KAFKA_PORT=9092
- QUARKUS_DATASOURCE_USERNAME=joao
- QUARKUS_DATASOURCE_PASSWORD=joao
- QUARKUS_DATASOURCE_HOST=postgres-db-alura
- QUARKUS_DATASOURCE_PORT=5432
ports:
- 8181:8181
depends_on:
- postgres-db-alura
- kafka-alura
entrypoint:
- /bin/sh
- -c
- |
/wait-for-it.sh postgres-db-alura:5432 --timeout=60 --strict -- echo "Postgres is up"
exec java -jar banking-validation-1.0.0-SNAPSHOT-runner.jar
postgres-db-alura:
image: postgres:14
container_name: postgres-db-alura-container
environment:
- POSTGRES_USER=joao
- POSTGRES_PASSWORD=joao
- POSTGRES_DB=agencia
- POSTGRES_HOST_AUTH_METHOD=md5
ports:
- 5434:5432
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
zookeeper-alura:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper-alura
restart: always
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka-alura:
image: confluentinc/cp-kafka:7.4.3
container_name: kafka-alura
restart: always
ports:
- "9092:9092"
- "9094:9094"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper-alura:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-alura:9092,PLAINTEXT_HOST://localhost:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:9094
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
depends_on:
- zookeeper-alura
kafka-topic-creator:
image: confluentinc/cp-kafka:7.4.3
container_name: kafka-topic-creator
depends_on:
- kafka-alura
entrypoint:
- /bin/sh
- -c
- |
for i in $(seq 1 30); do
kafka-topics --bootstrap-server kafka-alura:9092 --list && break
echo "Esperando Kafka ficar disponível... tentativa $i"
sleep 2
done
kafka-topics --bootstrap-server kafka-alura:9092 --create --replication-factor 1 --partitions 1 --topic remover-agencia || true
echo "Tópico criado ou já existe. Saindo..."
volumes:
postgres_data:
driver: local
dessa forma, quando da o docker compose up --build -d vai subir a aplicação com a imagem da minha maquia, criar o topico, e nao precisa reiniciar o pod do banking validation porque o pod do banco ainda não esta pronto para conexão.
Tambem mudei o application propertie do bankin-service para :
quarkus.rest-client.situacao-cadastral-api.url=http://${QUARKUS_CLIENT_HTTP:localhost}:${QUARKUS_CLIENT_HTTP_PORT:8181}
quarkus.datasource.db-kind = postgresql
quarkus.datasource.username = ${QUARKUS_DATASOURCE_USERNAME:joao}
quarkus.datasource.password = ${QUARKUS_DATASOURCE_PASSWORD:joao}
#quarkus.datasource.jdbc.url = jdbc:postgresql://${QUARKUS_DATASOURCE_HOST:localhost}:${QUARKUS_DATASOURCE_PORT:5433}/agencia
#quarkus.datasource.jdbc.reactive.url = jdbc:postgresql://localhost:5433/agencia
quarkus.datasource.reactive.url=postgresql://localhost:5433/agencia
quarkus.micrometer.export.prometheus.path=/metrics
quarkus.datasource.devservices.enabled=false
#kafka.bootstrap.servers=${QUARKUS_KAFKA_SERVER:localhost}:${QUARKUS_KAFKA_PORT:9092}
kafka.bootstrap.servers=localhost:9094
mp.messaging.incoming.banking-service-channel.connector=smallrye-kafka
mp.messaging.incoming.banking-service-channel.topic=remover-agencia
mp.messaging.incoming.banking-service-channel.group.id=remover-agencia-consumer-group
mp.messaging.incoming.banking-service-channel.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
mp.messaging.incoming.banking-service-channel.auto.offset.reset=earliest
quarkus.kafka.devservices.enabled=false
que agora o kafka esta conectando na porta 9094 pelo localhost.
com isso, consigo rodar o banking-service pelo intellij, e funcionando com o banking-validation no docker, com a rota do inativarAgencia funcionando...
nota importante: essas alterações são só para motivo de estudo e não devem ser utilizadas dessa forma.. estava apenas focando em continuar o curso da forma que queria, não seguindo as melhores praticas