diff --git a/docker-compose.yml b/docker-compose.yml index 9bfa0a0..2a01246 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,6 +49,26 @@ services: timeout: 5s retries: 5 + rabbitmq: + image: rabbitmq:4-management-alpine + profiles: ["infra"] + ports: + - "${RABBITMQ_PORT}:5672" + - "${RABBITMQ_MANAGEMENT_PORT}:15672" + environment: + - RABBITMQ_DEFAULT_USER=${RABBITMQ_USER} + - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} + - RABBITMQ_DEFAULT_VHOST=${RABBITMQ_VHOST} + volumes: + - rabbitmq_data:/var/lib/rabbitmq + networks: + - app-network + healthcheck: + test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] + interval: 10s + timeout: 5s + retries: 5 + # ================= BACKEND ================= suite-api: @@ -227,4 +247,5 @@ networks: volumes: mongodb_data: postgres_data: + rabbitmq_data: config-volume: \ No newline at end of file diff --git a/install.sh b/install.sh index b2ad054..ebe685a 100644 --- a/install.sh +++ b/install.sh @@ -253,6 +253,12 @@ collect_external_ports() { ask FRONTEND_USERS_APP_EXTERNAL_PORT "Frontend Users" "${FRONTEND_USERS_APP_EXTERNAL_PORT:-$FRONTEND_USERS_APP_INTERNAL_PORT}" } +collect_rabbitmq() { + print_section "5. RabbitMQ" + ask RABBITMQ_USER "Usuário admin do RabbitMQ" "${RABBITMQ_USER:-admin}" + ask RABBITMQ_PASSWORD "Senha admin do RabbitMQ" "${RABBITMQ_PASSWORD:-admin}" +} + # ══════════════════════════════════════════════════════════════ # Wizard principal — coleta com navegação # ══════════════════════════════════════════════════════════════ @@ -286,6 +292,8 @@ collect_config() { FRONTEND_USERS_APP_EXTERNAL_PORT="$FRONTEND_USERS_APP_INTERNAL_PORT" print_ok "Portas externas definidas iguais às internas." fi + + collect_rabbitmq } # ══════════════════════════════════════════════════════════════ @@ -315,6 +323,10 @@ show_summary() { 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 "" + echo -e " ${BOLD}[5] RabbitMQ${NC}" + echo -e " Usuário : ${BOLD}${RABBITMQ_USER}${NC}" + echo -e " Senha : ${BOLD}********${NC}" + echo "" echo -e " ──────────────────────────────────────────────────────────────" echo -e " ${GREEN}${BOLD}[C]${NC} Confirmar e continuar ${RED}${BOLD}[X]${NC} Cancelar instalação" echo -e " ──────────────────────────────────────────────────────────────" @@ -327,6 +339,7 @@ show_summary() { 2) collect_system_base ;; 3) collect_internal_ports ;; 4) collect_external_ports ;; + 5) collect_rabbitmq ;; C) break ;; X) echo "" @@ -334,7 +347,7 @@ show_summary() { exit 0 ;; *) - print_warn "Opção inválida. Digite 1-4, C ou X." + print_warn "Opção inválida. Digite 1-5, C ou X." ;; esac done @@ -382,6 +395,13 @@ POSTGRES_DB=attendancesystem CONSUL_HTTP_PORT=8500 CONSUL_DNS_PORT=8600 +# ── RabbitMQ ────────────────────────────────────────────── +RABBITMQ_PORT=5672 +RABBITMQ_MANAGEMENT_PORT=15672 +RABBITMQ_VHOST=/ +RABBITMQ_USER=${RABBITMQ_USER} +RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD} + # ── Sistema Base ────────────────────────────────────────── SYSTEM_BASE_CONN=${SYSTEM_BASE_CONN} SYSTEM_BASE_HOST=${SYSTEM_BASE_HOST} @@ -469,7 +489,7 @@ start_environment() { echo -e " ${BOLD}make install${NC} → sobe o projeto" echo -e " ${BOLD}make update${NC} → atualiza o projeto" echo -e " ${BOLD}make app${NC} → sobe apenas a aplicação" - echo -e " ${BOLD}make infra${NC} → sobe apenas a infra (MongoDB, PostgreSQL, Consul)" + echo -e " ${BOLD}make infra${NC} → sobe apenas a infra (MongoDB, PostgreSQL, Consul, RabbitMQ)" echo -e " ${BOLD}make nuke-project${NC} → limpa o projeto" echo -e " ${BOLD}make nuke${NC} → limpa tudo (cuidado!)" echo ""