feat: app completa recordaLexia (fases 1-5)
App web familiar de rutinas visuales para niños con TDAH: muestra cada día el material del cole y las rutinas de tarde, con gamificación por monedas y tienda de recompensas. Multi-niño y bilingüe ES/CA. Uso doméstico/homelab. Backend (Spring Boot 3.5 / Java 21 / Gradle): - Dominio por capas, PostgreSQL + Liquibase, datos semilla. - API REST con DTOs: /today, toggle con monedas y bonos de bloque/día, monedero, tienda/canje, ajustes y CRUD del panel de padres. - Seguridad ligera por PIN (BCrypt + sesion en memoria), sin Keycloak. - Tests JUnit: generacion del dia, monedas/bonos con reversion, canje, seguridad. Frontend (Angular 19, standalone + signals): - Perfiles, Home (Tablero y Foco), Tienda y panel de padres (5 pestañas). - Tipografia OpenDyslexic conmutable (accesibilidad), i18n ES/CA, TTS y sonido. - Tokens de diseño fieles al handoff (paleta, animaciones, monedas voladoras). Empaquetado: - Docker multi-stage + docker-compose (PostgreSQL + backend + Nginx). - Decisiones de arquitectura documentadas en docs/adr.
This commit is contained in:
33
backend/Dockerfile
Normal file
33
backend/Dockerfile
Normal file
@@ -0,0 +1,33 @@
|
||||
# --- Etapa 1: build ---
|
||||
# Compila el jar con el Gradle wrapper del proyecto (no requiere Gradle en host).
|
||||
FROM eclipse-temurin:21-jdk AS build
|
||||
WORKDIR /app
|
||||
|
||||
# Primero solo lo necesario para resolver dependencias y aprovechar la caché de capas.
|
||||
COPY gradlew settings.gradle build.gradle ./
|
||||
COPY gradle ./gradle
|
||||
RUN chmod +x gradlew && ./gradlew --no-daemon dependencies > /dev/null 2>&1 || true
|
||||
|
||||
# Ahora el código fuente y el empaquetado.
|
||||
COPY src ./src
|
||||
RUN ./gradlew --no-daemon clean bootJar
|
||||
|
||||
# --- Etapa 2: runtime ---
|
||||
# Imagen mínima con JRE 21. Usuario no-root y zona horaria del negocio.
|
||||
FROM eclipse-temurin:21-jre AS runtime
|
||||
WORKDIR /app
|
||||
ENV TZ=Europe/Madrid
|
||||
|
||||
# Usuario sin privilegios.
|
||||
RUN useradd --system --uid 10001 --create-home appuser
|
||||
USER appuser
|
||||
|
||||
COPY --from=build /app/build/libs/*.jar app.jar
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
# Healthcheck contra el endpoint de Actuator (solo health expuesto).
|
||||
HEALTHCHECK --interval=15s --timeout=3s --start-period=40s --retries=5 \
|
||||
CMD wget -qO- http://localhost:8080/actuator/health | grep -q '"status":"UP"' || exit 1
|
||||
|
||||
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
|
||||
Reference in New Issue
Block a user