ci: implements jenkins deploy
This commit is contained in:
47
Dockerfile
47
Dockerfile
@@ -1,16 +1,47 @@
|
||||
# Stage 1: Build
|
||||
# --- Stage 1: Build & Dependencies ---
|
||||
FROM maven:3.9-eclipse-temurin-21-alpine AS build
|
||||
WORKDIR /app
|
||||
|
||||
# Copiamos todo el proyecto
|
||||
COPY . .
|
||||
# 1. Copiamos los archivos de configuración (Estructura de poms)
|
||||
COPY pom.xml .
|
||||
COPY application/pom.xml ./application/
|
||||
COPY bootstrap/pom.xml ./bootstrap/
|
||||
COPY domain/pom.xml ./domain/
|
||||
COPY infrastructure/pom.xml ./infrastructure/
|
||||
|
||||
# Compilamos todo el proyecto (todos los módulos)
|
||||
RUN mvn clean package -DskipTests
|
||||
# 2. Descargamos dependencias (Cacheamos esta capa)
|
||||
# Usamos install de los poms para que los módulos se reconozcan entre sí
|
||||
RUN mvn dependency:go-offline -B
|
||||
|
||||
# Stage 2: Run
|
||||
FROM openjdk:21-jdk
|
||||
# 3. Copiamos el código fuente y compilamos
|
||||
COPY application/src ./application/src
|
||||
COPY bootstrap/src ./bootstrap/src
|
||||
COPY domain/src ./domain/src
|
||||
COPY infrastructure/src ./infrastructure/src
|
||||
|
||||
RUN mvn clean package -DskipTests -B
|
||||
|
||||
# --- Stage 2: Run (Imagen final ligera) ---
|
||||
FROM eclipse-temurin:21-jre-alpine
|
||||
WORKDIR /app
|
||||
|
||||
# Seguridad: Usuario no-root
|
||||
RUN addgroup -S spring && adduser -S spring -G spring
|
||||
USER spring:spring
|
||||
|
||||
# Copiamos solo el JAR final (ajustado a tu módulo bootstrap)
|
||||
COPY --from=build /app/bootstrap/target/*.jar app.jar
|
||||
|
||||
# Configuración de Memoria y Rendimiento para Microservicios
|
||||
# -XX:+UseSerialGC: Menos consumo de RAM para apps < 1GB
|
||||
# -XX:TieredStopAtLevel=1: Arranque más rápido y menos uso de RAM del compilador JIT
|
||||
# -XX:MaxRAMPercentage: Se ajusta dinámicamente al límite de Docker
|
||||
ENV JAVA_OPTS="-XX:+UseContainerSupport \
|
||||
-XX:MaxRAMPercentage=75.0 \
|
||||
-XX:+UseSerialGC \
|
||||
-XX:TieredStopAtLevel=1 \
|
||||
-Xms128m"
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Xmx512m", "-Xms256m", "-jar", "app.jar"]
|
||||
|
||||
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
|
||||
3
Jenkinsfile
vendored
3
Jenkinsfile
vendored
@@ -70,5 +70,8 @@ pipeline {
|
||||
failure {
|
||||
echo "❌ Pipeline failed!"
|
||||
}
|
||||
always {
|
||||
deleteDir()
|
||||
}
|
||||
}
|
||||
}
|
||||
6
Makefile
6
Makefile
@@ -1,3 +1,4 @@
|
||||
STACK=pablotj-portfolio
|
||||
APP_NAME=pablotj-portfolio-api
|
||||
IMAGE_NAME=$(APP_NAME)
|
||||
|
||||
@@ -6,7 +7,7 @@ NAMESPACE=andromeda
|
||||
TAG?=latest
|
||||
|
||||
HOST_PORT=8181
|
||||
CONTAINER_PORT=80
|
||||
CONTAINER_PORT=8080
|
||||
|
||||
IMAGE_FULL=$(REGISTRY_URL)/$(NAMESPACE)/$(IMAGE_NAME):$(TAG)
|
||||
|
||||
@@ -22,6 +23,9 @@ push:
|
||||
run:
|
||||
docker run -d \
|
||||
--name $(APP_NAME) \
|
||||
--label com.docker.compose.service="$(APP_NAME)" \
|
||||
--label com.docker.compose.project="$(STACK)" \
|
||||
--network andromeda \
|
||||
-p $(HOST_PORT):$(CONTAINER_PORT) \
|
||||
--env-file .env \
|
||||
$(IMAGE_FULL)
|
||||
|
||||
@@ -124,11 +124,6 @@ alter table if exists experience_skill
|
||||
foreign key (experience_id)
|
||||
references experience;
|
||||
|
||||
alter table if exists profile_social_link
|
||||
add constraint FKfh1pbfvvg3palcr1yip6jffik
|
||||
foreign key (PROFILE_ID)
|
||||
references profile;
|
||||
|
||||
alter table if exists project_feature
|
||||
add constraint FKdifppyvrfito5in15ox4db0up
|
||||
foreign key (project_id)
|
||||
|
||||
Reference in New Issue
Block a user