From bb7eb2be85aaf30c6254658f2276c0114c9a6f06 Mon Sep 17 00:00:00 2001 From: renator2 Date: Tue, 21 Jul 2026 12:18:11 -0300 Subject: [PATCH] =?UTF-8?q?#SVTH-575=20-=20adi=C3=A7=C3=A3o=20das=20config?= =?UTF-8?q?ura=C3=A7=C3=B5es=20do=20rabbitmq=20e=20do=20m=C3=B3dulo=20de?= =?UTF-8?q?=20tenants.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 46 ++++++++++++++++++++ install.sh | 90 +++++++++++++++++++++++++++++++++++++-- rabbitmq/definitions.conf | 1 + 3 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 rabbitmq/definitions.conf diff --git a/docker-compose.yml b/docker-compose.yml index 2a01246..169cd4f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,8 @@ services: - RABBITMQ_DEFAULT_VHOST=${RABBITMQ_VHOST} volumes: - rabbitmq_data:/var/lib/rabbitmq + - ./rabbitmq/definitions.json:/etc/rabbitmq/definitions.json:ro + - ./rabbitmq/definitions.conf:/etc/rabbitmq/conf.d/20-definitions.conf:ro networks: - app-network healthcheck: @@ -83,6 +85,17 @@ services: - SYSTEM_BASE_CONN=${SYSTEM_BASE_CONN} - FRONTEND_CONN=${INTERNAL_HOST}:${FRONTEND_SUITE_APP_INTERNAL_PORT} - ConsulSettings__Address=http://consul:8500 + - Messaging__RabbitMQ__Host=rabbitmq + - Messaging__RabbitMQ__Port=5672 + - Messaging__RabbitMQ__VirtualHost=${RABBITMQ_SUITE_VHOST} + - Messaging__RabbitMQ__Username=${RABBITMQ_SUITE_OWNER_USER} + - Messaging__RabbitMQ__Password=${RABBITMQ_SUITE_OWNER_PASSWORD} + - Messaging__RabbitMQ__Messaging__ServiceName=suite + - Messaging__RabbitMQ__Connections__users__Host=rabbitmq + - Messaging__RabbitMQ__Connections__users__Port=5672 + - Messaging__RabbitMQ__Connections__users__VirtualHost=${RABBITMQ_USERS_VHOST} + - Messaging__RabbitMQ__Connections__users__Username=${RABBITMQ_USERS_WRITER_USER} + - Messaging__RabbitMQ__Connections__users__Password=${RABBITMQ_USERS_WRITER_PASSWORD} - KEEPALIVE_ATTENDANCE_SYSTEM_BACKEND_HOST=${KEEPALIVE_ATTENDANCE_SYSTEM_BACKEND_HOST} - KEEPALIVE_ATTENDANCE_SYSTEM_FRONTEND_HOST=${KEEPALIVE_ATTENDANCE_SYSTEM_FRONTEND_HOST} - KEEPALIVE_REPORTS_BACKEND_HOST=${KEEPALIVE_REPORTS_BACKEND_HOST} @@ -92,6 +105,8 @@ services: depends_on: consul: condition: service_healthy + rabbitmq: + condition: service_healthy networks: - app-network @@ -107,6 +122,17 @@ services: - ConsulSettings__Address=http://consul:8500 - ServiceRegistrationSettings__Host=users-api - ServiceRegistrationSettings__Port=${BACKEND_USERS_API_INTERNAL_PORT} + - Messaging__RabbitMQ__Host=rabbitmq + - Messaging__RabbitMQ__Port=5672 + - Messaging__RabbitMQ__VirtualHost=${RABBITMQ_USERS_VHOST} + - Messaging__RabbitMQ__Username=${RABBITMQ_USERS_OWNER_USER} + - Messaging__RabbitMQ__Password=${RABBITMQ_USERS_OWNER_PASSWORD} + - Messaging__RabbitMQ__Messaging__ServiceName=users + - Messaging__RabbitMQ__Connections__suite__Host=rabbitmq + - Messaging__RabbitMQ__Connections__suite__Port=5672 + - Messaging__RabbitMQ__Connections__suite__VirtualHost=${RABBITMQ_SUITE_VHOST} + - Messaging__RabbitMQ__Connections__suite__Username=${RABBITMQ_SUITE_WRITER_USER} + - Messaging__RabbitMQ__Connections__suite__Password=${RABBITMQ_SUITE_WRITER_PASSWORD} depends_on: postgres: condition: service_healthy @@ -114,6 +140,8 @@ services: condition: service_healthy consul: condition: service_healthy + rabbitmq: + condition: service_healthy networks: - app-network @@ -164,8 +192,10 @@ services: - BACKEND_ACCOUNT_API_URL=${EXTERNAL_HOST}:${BACKEND_ACCOUNT_API_EXTERNAL_PORT} - BACKEND_REPORTS_API_URL=${EXTERNAL_HOST}:${BACKEND_REPORTS_API_EXTERNAL_PORT} - BACKEND_USERS_API_URL=${EXTERNAL_HOST}:${BACKEND_USERS_API_EXTERNAL_PORT} + - BACKEND_TENANTS_API_URL=${EXTERNAL_HOST}:${BACKEND_TENANTS_API_EXTERNAL_PORT} - FRONTEND_REPORTS_URL=${EXTERNAL_HOST}:${FRONTEND_REPORTS_APP_EXTERNAL_PORT} - FRONTEND_USERS_URL=${EXTERNAL_HOST}:${FRONTEND_USERS_APP_EXTERNAL_PORT} + - FRONTEND_TENANTS_URL=${EXTERNAL_HOST}:${FRONTEND_TENANTS_APP_EXTERNAL_PORT} command: > sh -c "apk add --no-cache gettext && envsubst < /config.template.json > /output/config.json && @@ -224,6 +254,22 @@ services: config-generator: condition: service_completed_successfully + tenants-app: + image: ${DOCKER_REPO}/tenants-app:${IMAGEM_UNSTABLE_LATEST} + profiles: ["app"] + volumes: + - config-volume:/config-inject:ro + entrypoint: > + sh -c "cp /config-inject/config.json /usr/share/nginx/html/config.json && + nginx -g 'daemon off;'" + ports: + - "${FRONTEND_TENANTS_APP_INTERNAL_PORT}:${NGINX_DEFAULT_PORT}" + networks: + - app-network + depends_on: + config-generator: + condition: service_completed_successfully + suite-app: image: ${DOCKER_REPO}/suite-app:${IMAGEM_UNSTABLE_LATEST} profiles: ["app"] diff --git a/install.sh b/install.sh index ebe685a..7b7b028 100644 --- a/install.sh +++ b/install.sh @@ -227,12 +227,14 @@ collect_internal_ports() { ask BACKEND_ACCOUNT_API_INTERNAL_PORT "Backend Account API" "${BACKEND_ACCOUNT_API_INTERNAL_PORT:-10103}" ask BACKEND_REPORTS_API_INTERNAL_PORT "Backend Reports API" "${BACKEND_REPORTS_API_INTERNAL_PORT:-10105}" ask BACKEND_USERS_API_INTERNAL_PORT "Backend Users API" "${BACKEND_USERS_API_INTERNAL_PORT:-10109}" + ask BACKEND_TENANTS_API_INTERNAL_PORT "Backend Tenants API" "${BACKEND_TENANTS_API_INTERNAL_PORT:-10110}" ask FRONTEND_SUITE_APP_INTERNAL_PORT "Frontend Suite" "${FRONTEND_SUITE_APP_INTERNAL_PORT:-4200}" ask FRONTEND_PEOPLE_APP_INTERNAL_PORT "Frontend People" "${FRONTEND_PEOPLE_APP_INTERNAL_PORT:-4201}" ask FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT "Frontend AttendanceSystem" "${FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT:-4202}" ask FRONTEND_ACCOUNT_APP_INTERNAL_PORT "Frontend Account" "${FRONTEND_ACCOUNT_APP_INTERNAL_PORT:-4203}" ask FRONTEND_REPORTS_APP_INTERNAL_PORT "Frontend Reports" "${FRONTEND_REPORTS_APP_INTERNAL_PORT:-4205}" ask FRONTEND_USERS_APP_INTERNAL_PORT "Frontend Users" "${FRONTEND_USERS_APP_INTERNAL_PORT:-4209}" + ask FRONTEND_TENANTS_APP_INTERNAL_PORT "Frontend Tenants" "${FRONTEND_TENANTS_APP_INTERNAL_PORT:-4210}" } collect_external_ports() { @@ -245,12 +247,14 @@ collect_external_ports() { ask BACKEND_ACCOUNT_API_EXTERNAL_PORT "Backend Account API" "${BACKEND_ACCOUNT_API_EXTERNAL_PORT:-$BACKEND_ACCOUNT_API_INTERNAL_PORT}" ask BACKEND_REPORTS_API_EXTERNAL_PORT "Backend Reports API" "${BACKEND_REPORTS_API_EXTERNAL_PORT:-$BACKEND_REPORTS_API_INTERNAL_PORT}" ask BACKEND_USERS_API_EXTERNAL_PORT "Backend Users API" "${BACKEND_USERS_API_EXTERNAL_PORT:-$BACKEND_USERS_API_INTERNAL_PORT}" + ask BACKEND_TENANTS_API_EXTERNAL_PORT "Backend Tenants API" "${BACKEND_TENANTS_API_EXTERNAL_PORT:-$BACKEND_TENANTS_API_INTERNAL_PORT}" ask FRONTEND_SUITE_APP_EXTERNAL_PORT "Frontend Suite" "${FRONTEND_SUITE_APP_EXTERNAL_PORT:-$FRONTEND_SUITE_APP_INTERNAL_PORT}" ask FRONTEND_PEOPLE_APP_EXTERNAL_PORT "Frontend People" "${FRONTEND_PEOPLE_APP_EXTERNAL_PORT:-$FRONTEND_PEOPLE_APP_INTERNAL_PORT}" ask FRONTEND_ATTENDANCESYSTEM_APP_EXTERNAL_PORT "Frontend AttendanceSystem" "${FRONTEND_ATTENDANCESYSTEM_APP_EXTERNAL_PORT:-$FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT}" ask FRONTEND_ACCOUNT_APP_EXTERNAL_PORT "Frontend Account" "${FRONTEND_ACCOUNT_APP_EXTERNAL_PORT:-$FRONTEND_ACCOUNT_APP_INTERNAL_PORT}" ask FRONTEND_REPORTS_APP_EXTERNAL_PORT "Frontend Reports" "${FRONTEND_REPORTS_APP_EXTERNAL_PORT:-$FRONTEND_REPORTS_APP_INTERNAL_PORT}" ask FRONTEND_USERS_APP_EXTERNAL_PORT "Frontend Users" "${FRONTEND_USERS_APP_EXTERNAL_PORT:-$FRONTEND_USERS_APP_INTERNAL_PORT}" + ask FRONTEND_TENANTS_APP_EXTERNAL_PORT "Frontend Tenants" "${FRONTEND_TENANTS_APP_EXTERNAL_PORT:-$FRONTEND_TENANTS_APP_INTERNAL_PORT}" } collect_rabbitmq() { @@ -284,12 +288,14 @@ collect_config() { BACKEND_ACCOUNT_API_EXTERNAL_PORT="$BACKEND_ACCOUNT_API_INTERNAL_PORT" BACKEND_REPORTS_API_EXTERNAL_PORT="$BACKEND_REPORTS_API_INTERNAL_PORT" BACKEND_USERS_API_EXTERNAL_PORT="$BACKEND_USERS_API_INTERNAL_PORT" + BACKEND_TENANTS_API_EXTERNAL_PORT="$BACKEND_TENANTS_API_INTERNAL_PORT" FRONTEND_SUITE_APP_EXTERNAL_PORT="$FRONTEND_SUITE_APP_INTERNAL_PORT" FRONTEND_PEOPLE_APP_EXTERNAL_PORT="$FRONTEND_PEOPLE_APP_INTERNAL_PORT" FRONTEND_ATTENDANCESYSTEM_APP_EXTERNAL_PORT="$FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT" FRONTEND_ACCOUNT_APP_EXTERNAL_PORT="$FRONTEND_ACCOUNT_APP_INTERNAL_PORT" FRONTEND_REPORTS_APP_EXTERNAL_PORT="$FRONTEND_REPORTS_APP_INTERNAL_PORT" FRONTEND_USERS_APP_EXTERNAL_PORT="$FRONTEND_USERS_APP_INTERNAL_PORT" + FRONTEND_TENANTS_APP_EXTERNAL_PORT="$FRONTEND_TENANTS_APP_INTERNAL_PORT" print_ok "Portas externas definidas iguais às internas." fi @@ -316,12 +322,12 @@ show_summary() { echo -e " Porta : ${BOLD}${SYSTEM_BASE_PORT}${NC}" echo "" echo -e " ${BOLD}[3] Portas Internas${NC}" - echo -e " Backend Suite/People/Attendance/Account/Reports/Users : ${BOLD}${BACKEND_SUITE_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_PEOPLE_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ACCOUNT_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_REPORTS_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_USERS_API_INTERNAL_PORT}${NC}" - echo -e " Frontend Suite/People/Attendance/Account/Reports/Users : ${BOLD}${FRONTEND_SUITE_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_PEOPLE_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ACCOUNT_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_REPORTS_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_USERS_APP_INTERNAL_PORT}${NC}" + echo -e " Backend Suite/People/Attendance/Account/Reports/Users/Tenants : ${BOLD}${BACKEND_SUITE_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_PEOPLE_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ACCOUNT_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_REPORTS_API_INTERNAL_PORT}${NC} / ${BOLD}${BACKEND_USERS_API_INTERNAL_PORT}${NC}" / ${BOLD}${BACKEND_TENANTS_API_INTERNAL_PORT}${NC}" + echo -e " Frontend Suite/People/Attendance/Account/Reports/Users/Tenants : ${BOLD}${FRONTEND_SUITE_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_PEOPLE_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ATTENDANCESYSTEM_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ACCOUNT_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_REPORTS_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_USERS_APP_INTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_TENANTS_APP_INTERNAL_PORT}${NC}" echo "" echo -e " ${BOLD}[4] Portas Externas${NC}" - echo -e " Backend Suite/People/Attendance/Account/Reports/Users : ${BOLD}${BACKEND_SUITE_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_PEOPLE_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ATTENDANCESYSTEM_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ACCOUNT_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_REPORTS_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_USERS_API_EXTERNAL_PORT}${NC}" - echo -e " Frontend Suite/People/Attendance/Account/Reports/Users : ${BOLD}${FRONTEND_SUITE_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_PEOPLE_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ATTENDANCESYSTEM_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ACCOUNT_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_REPORTS_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_USERS_APP_EXTERNAL_PORT}${NC}" + echo -e " Backend Suite/People/Attendance/Account/Reports/Users/Tenants : ${BOLD}${BACKEND_SUITE_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_PEOPLE_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ATTENDANCESYSTEM_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_ACCOUNT_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_REPORTS_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_USERS_API_EXTERNAL_PORT}${NC} / ${BOLD}${BACKEND_TENANTS_API_EXTERNAL_PORT}${NC}" + echo -e " Frontend Suite/People/Attendance/Account/Reports/Users/Tenants : ${BOLD}${FRONTEND_SUITE_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_PEOPLE_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ATTENDANCESYSTEM_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_ACCOUNT_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_REPORTS_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_USERS_APP_EXTERNAL_PORT}${NC} / ${BOLD}${FRONTEND_TENANTS_APP_EXTERNAL_PORT}${NC}" echo "" echo -e " ${BOLD}[5] RabbitMQ${NC}" echo -e " Usuário : ${BOLD}${RABBITMQ_USER}${NC}" @@ -372,6 +378,9 @@ generate_envs() { local KEEPALIVE_BACKEND_USERS="${EXTERNAL_HOST}:${BACKEND_USERS_API_EXTERNAL_PORT}" local KEEPALIVE_FRONTEND_USERS="${EXTERNAL_HOST}:${FRONTEND_USERS_APP_EXTERNAL_PORT}" + local KEEPALIVE_BACKEND_TENANTS="${EXTERNAL_HOST}:${BACKEND_TENANTS_API_EXTERNAL_PORT}" + local KEEPALIVE_FRONTEND_TENANTS="${EXTERNAL_HOST}:${FRONTEND_TENANTS_APP_EXTERNAL_PORT}" + cat > "$BASE_DIR/.env.prod" < "$BASE_DIR/rabbitmq/definitions.json" <