#SVTH-575 - Gestão de instalação do consul e serviço de usuários.
This commit is contained in:
@@ -15,6 +15,40 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
consul:
|
||||
image: hashicorp/consul:latest
|
||||
profiles: ["infra"]
|
||||
ports:
|
||||
- "${CONSUL_HTTP_PORT}:8500"
|
||||
- "${CONSUL_DNS_PORT}:8600/udp"
|
||||
command: "agent -server -bootstrap -ui -client=0.0.0.0"
|
||||
networks:
|
||||
- app-network
|
||||
healthcheck:
|
||||
test: ["CMD", "consul", "members"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
profiles: ["infra"]
|
||||
ports:
|
||||
- "${POSTGRES_PORT}:5432"
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=${POSTGRES_DB}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- app-network
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# ================= BACKEND =================
|
||||
|
||||
suite-api:
|
||||
@@ -32,6 +66,19 @@ services:
|
||||
- KEEPALIVE_ATTENDANCE_SYSTEM_FRONTEND_HOST=${KEEPALIVE_ATTENDANCE_SYSTEM_FRONTEND_HOST}
|
||||
- KEEPALIVE_REPORTS_BACKEND_HOST=${KEEPALIVE_REPORTS_BACKEND_HOST}
|
||||
- KEEPALIVE_REPORTS_FRONTEND_HOST=${KEEPALIVE_REPORTS_FRONTEND_HOST}
|
||||
- KEEPALIVE_USERS_BACKEND_HOST=${KEEPALIVE_USERS_BACKEND_HOST}
|
||||
- KEEPALIVE_USERS_FRONTEND_HOST=${KEEPALIVE_USERS_FRONTEND_HOST}
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
users-api:
|
||||
image: ${DOCKER_REPO}/sca-users-api:${IMAGEM_UNSTABLE_LATEST}
|
||||
profiles: ["app"]
|
||||
ports:
|
||||
- "${BACKEND_USERS_API_INTERNAL_PORT}:${BACKEND_USERS_API_INTERNAL_PORT}"
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}
|
||||
- SystemBaseConn=${SYSTEM_BASE_CONN}
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
@@ -81,7 +128,9 @@ services:
|
||||
- BACKEND_PEOPLE_API_URL=${EXTERNAL_HOST}:${BACKEND_PEOPLE_API_EXTERNAL_PORT}
|
||||
- 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}
|
||||
- FRONTEND_REPORTS_URL=${EXTERNAL_HOST}:${FRONTEND_REPORTS_APP_EXTERNAL_PORT}
|
||||
- FRONTEND_USERS_URL=${EXTERNAL_HOST}:${FRONTEND_USERS_APP_EXTERNAL_PORT}
|
||||
command: >
|
||||
sh -c "apk add --no-cache gettext &&
|
||||
envsubst < /config.template.json > /output/config.json &&
|
||||
@@ -146,4 +195,5 @@ networks:
|
||||
|
||||
volumes:
|
||||
mongodb_data:
|
||||
postgres_data:
|
||||
config-volume:
|
||||
43
install.sh
43
install.sh
@@ -4,7 +4,7 @@
|
||||
# 🚀 Instalador - AttendanceSystem
|
||||
# Uso:
|
||||
# bash <(curl -fsSL \
|
||||
# "https://git.seventh.com.br/seventh.p7/attendance-system.install/raw/branch/develop/install.sh")
|
||||
# "https://git.seventh.com.br/seventh.p7/attendance-system.install/raw/branch/feature%2FSVTH-575---install-users/install.sh")
|
||||
# ==============================================================
|
||||
|
||||
# ── Redireciona stdin para o terminal quando rodado via curl | bash ──
|
||||
@@ -28,7 +28,7 @@ NC='\033[0m'
|
||||
|
||||
# ─── Repositório Git ──────────────────────────────────────────
|
||||
INSTALL_DIR="attendancesystem"
|
||||
BRANCH="${BRANCH:-develop}"
|
||||
BRANCH="${BRANCH:-feature/SVTH-575---install-users}"
|
||||
ENV_FILE=""
|
||||
GIT_REPO="https://git.seventh.com.br/seventh.p7/attendance-system.install.git"
|
||||
|
||||
@@ -226,6 +226,7 @@ collect_internal_ports() {
|
||||
ask BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT "Backend AttendanceSystem API" "${BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT:-10102}"
|
||||
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:-10106}"
|
||||
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}"
|
||||
@@ -242,6 +243,7 @@ collect_external_ports() {
|
||||
ask BACKEND_ATTENDANCESYSTEM_API_EXTERNAL_PORT "Backend AttendanceSystem API" "${BACKEND_ATTENDANCESYSTEM_API_EXTERNAL_PORT:-$BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT}"
|
||||
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 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}"
|
||||
@@ -249,11 +251,6 @@ collect_external_ports() {
|
||||
ask FRONTEND_REPORTS_APP_EXTERNAL_PORT "Frontend Reports" "${FRONTEND_REPORTS_APP_EXTERNAL_PORT:-$FRONTEND_REPORTS_APP_INTERNAL_PORT}"
|
||||
}
|
||||
|
||||
collect_database() {
|
||||
print_section "5. Banco de Dados"
|
||||
ask MONGO_PORT "MongoDB (porta interna)" "${MONGO_PORT:-27017}"
|
||||
}
|
||||
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
# Wizard principal — coleta com navegação
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
@@ -278,15 +275,15 @@ collect_config() {
|
||||
BACKEND_ATTENDANCESYSTEM_API_EXTERNAL_PORT="$BACKEND_ATTENDANCESYSTEM_API_INTERNAL_PORT"
|
||||
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"
|
||||
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"
|
||||
print_ok "Portas externas definidas iguais às internas."
|
||||
fi
|
||||
|
||||
collect_database
|
||||
}
|
||||
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
@@ -309,15 +306,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 : ${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}"
|
||||
echo -e " Frontend Suite/People/Attendance/Account/Reports : ${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}"
|
||||
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 ""
|
||||
echo -e " ${BOLD}[4] Portas Externas${NC}"
|
||||
echo -e " Backend Suite/People/Attendance/Account/Reports : ${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}"
|
||||
echo -e " Frontend Suite/People/Attendance/Account/Reports : ${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}"
|
||||
echo ""
|
||||
echo -e " ${BOLD}[5] Banco de Dados${NC}"
|
||||
echo -e " MongoDB : ${BOLD}${MONGO_PORT}${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 ""
|
||||
echo -e " ──────────────────────────────────────────────────────────────"
|
||||
echo -e " ${GREEN}${BOLD}[C]${NC} Confirmar e continuar ${RED}${BOLD}[X]${NC} Cancelar instalação"
|
||||
@@ -331,7 +325,6 @@ show_summary() {
|
||||
2) collect_system_base ;;
|
||||
3) collect_internal_ports ;;
|
||||
4) collect_external_ports ;;
|
||||
5) collect_database ;;
|
||||
C) break ;;
|
||||
X)
|
||||
echo ""
|
||||
@@ -339,7 +332,7 @@ show_summary() {
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
print_warn "Opção inválida. Digite 1-5, C ou X."
|
||||
print_warn "Opção inválida. Digite 1-4, C ou X."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -370,10 +363,20 @@ IMAGEM_RELEASE=2.0
|
||||
NGINX_DEFAULT_PORT=80
|
||||
|
||||
# ── MongoDB ───────────────────────────────────────────────
|
||||
MONGO_PORT=${MONGO_PORT}
|
||||
MONGO_PORT=27017
|
||||
MONGODB_CONNECTION_STRING=mongodb://mongodb:27017/suitedb
|
||||
MONGODB_DATABASE=suitedb
|
||||
|
||||
# ── PostgreSQL ────────────────────────────────────────────
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=postgres
|
||||
POSTGRES_DB=attendancesystem
|
||||
|
||||
# ── Consul ────────────────────────────────────────────────
|
||||
CONSUL_HTTP_PORT=8500
|
||||
CONSUL_DNS_PORT=8600
|
||||
|
||||
# ── Sistema Base ──────────────────────────────────────────
|
||||
SYSTEM_BASE_CONN=${SYSTEM_BASE_CONN}
|
||||
SYSTEM_BASE_HOST=${SYSTEM_BASE_HOST}
|
||||
@@ -452,7 +455,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)"
|
||||
echo -e " ${BOLD}make infra${NC} → sobe apenas a infra (MongoDB, PostgreSQL, Consul)"
|
||||
echo -e " ${BOLD}make nuke-project${NC} → limpa o projeto"
|
||||
echo -e " ${BOLD}make nuke${NC} → limpa tudo (cuidado!)"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user