diff --git a/Dockerfile b/Dockerfile index 0cab433..baaa2aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,24 @@ +# ─── ETAPA 1: BUILD ─────────────────────────────────────────────────────────── +FROM maven:3-eclipse-temurin-25 AS builder + +WORKDIR /app + +# Copia el pom primero para aprovechar cache de dependencias +COPY pom.xml . +RUN mvn dependency:go-offline -q + +# Copia el código fuente y compila (sin tests) +COPY src ./src +RUN mvn package -DskipTests -q + +# ─── ETAPA 2: RUNTIME ───────────────────────────────────────────────────────── FROM eclipse-temurin:25-jdk WORKDIR /app -COPY target/*.jar app.jar +# Solo copia el .jar generado — Maven y el código fuente NO están aquí +COPY --from=builder /app/target/*.jar app.jar EXPOSE 8080 -ENTRYPOINT ["java","-jar","/app/app.jar"] \ No newline at end of file +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/docker-compose_prod.yml b/docker-compose_prod.yml index 7790322..34f1f46 100644 --- a/docker-compose_prod.yml +++ b/docker-compose_prod.yml @@ -9,6 +9,13 @@ services: MYSQL_ALLOW_EMPTY_PASSWORD: ${MYSQL_ALLOW_EMPTY_PASSWORD} ports: - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 10s + timeout: 5s + retries: 5 restart: unless-stopped backend: @@ -17,11 +24,15 @@ services: dockerfile: Dockerfile container_name: spring_admision depends_on: - - mysql + mysql: + condition: service_healthy ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=UTC SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: "" - restart: unless-stopped \ No newline at end of file + restart: unless-stopped + +volumes: + mysql_data: