services: # ────────────────────────────────────────── # Base de datos MySQL 8 # ────────────────────────────────────────── db: image: mysql:8.0 container_name: rc_mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: recursoscatolicos MYSQL_USER: rc_user MYSQL_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} volumes: - mysql_data:/var/lib/mysql ports: - "3306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "--silent"] interval: 10s timeout: 5s retries: 10 start_period: 30s # ────────────────────────────────────────── # Aplicación Spring Boot # ────────────────────────────────────────── app: build: . container_name: rc_app restart: unless-stopped ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: "jdbc:mysql://db:3306/recursoscatolicos?useSSL=false&serverTimezone=Europe/Madrid&allowPublicKeyRetrieval=true&characterEncoding=UTF-8" SPRING_DATASOURCE_USERNAME: rc_user SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} JWT_SECRET: ${JWT_SECRET} JWT_EXPIRATION: ${JWT_EXPIRATION:-86400000} CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS} depends_on: db: condition: service_healthy volumes: mysql_data: