diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..edc8e33 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +modules/webapp/src/main/angular/node_modules +modules/webapp/src/main/angular/dist +modules/webapp/src/main/angular/node +modules/webapp/src/main/angular/.angular diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..ef58e69 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,13 @@ +services: + restapi: + build: + context: . + dockerfile: modules/rest-api/Dockerfile + ports: + - "8080:8080" + webapp: + build: + context: . + dockerfile: modules/webapp/Dockerfile + ports: + - "8081:8081" diff --git a/k8s-deployment.yaml b/k8s-deployment.yaml new file mode 100644 index 0000000..a7a8bad --- /dev/null +++ b/k8s-deployment.yaml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: json-schema-podo-generator + labels: + app: json-schema-podo-generator +spec: + replicas: 1 + selector: + matchLabels: + app: json-schema-podo-generator + template: + metadata: + labels: + app: json-schema-podo-generator + spec: + containers: + - name: jspg-restapi + image: spatacean.com/jspg/rest-api:k8s-test + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + - name: jspg-webapp + image: spatacean.com/jspg/webapp:k8s-test + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8081 +--- +apiVersion: v1 +kind: Service +metadata: + name: json-schema-podo-generator + labels: + app: json-schema-podo-generator +spec: + selector: + app: json-schema-podo-generator + ports: + - port: 8081 + targetPort: 8081 + nodePort: 30081 + type: NodePort diff --git a/modules/cli-wrapper/Dockerfile b/modules/cli-wrapper/Dockerfile new file mode 100644 index 0000000..a2eadb7 --- /dev/null +++ b/modules/cli-wrapper/Dockerfile @@ -0,0 +1,29 @@ +FROM maven:3.9.9-eclipse-temurin-21 AS dependencies +WORKDIR /app +COPY pom.xml . +COPY modules/cli-wrapper/pom.xml modules/cli-wrapper/pom.xml +COPY modules/core/pom.xml modules/core/pom.xml +COPY modules/rest-api/pom.xml modules/rest-api/pom.xml +COPY modules/webapp/pom.xml modules/webapp/pom.xml + +RUN mvn dependency:go-offline -B -e -DskipTests -DexcludeArtifactsIds=podo-generator-core + +FROM maven:3.9.9-eclipse-temurin-21 AS builder +LABEL authors="gpspatacean" + +WORKDIR /app +COPY --from=dependencies /root/.m2 /root/.m2 +COPY pom.xml . +COPY modules modules + +RUN mvn clean package -pl modules/cli-wrapper -am -B -e -DskipTests + +FROM eclipse-temurin:21-jre +WORKDIR /app + +RUN useradd -m -s /usr/sbin/nologin appuser +USER appuser + +COPY --from=builder /app/modules/cli-wrapper/target/*.jar /app/app.jar + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] diff --git a/modules/rest-api/Dockerfile b/modules/rest-api/Dockerfile new file mode 100644 index 0000000..f661e8a --- /dev/null +++ b/modules/rest-api/Dockerfile @@ -0,0 +1,31 @@ +FROM maven:3.9.9-eclipse-temurin-21 AS dependencies +WORKDIR /app +COPY pom.xml . +COPY modules/cli-wrapper/pom.xml modules/cli-wrapper/pom.xml +COPY modules/core/pom.xml modules/core/pom.xml +COPY modules/rest-api/pom.xml modules/rest-api/pom.xml +COPY modules/webapp/pom.xml modules/webapp/pom.xml + +RUN mvn dependency:go-offline -B -e -DskipTests -DexcludeArtifactsIds=podo-generator-core + +FROM maven:3.9.9-eclipse-temurin-21 AS builder +LABEL authors="gpspatacean" + +WORKDIR /app +COPY --from=dependencies /root/.m2 /root/.m2 +COPY pom.xml . +COPY modules modules + +RUN mvn clean package -pl modules/rest-api -am -B -e -DskipTests + +FROM eclipse-temurin:21-jre +WORKDIR /app + +RUN useradd -m -s /usr/sbin/nologin appuser +USER appuser + +COPY --from=builder /app/modules/rest-api/target/*.jar /app/app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] diff --git a/modules/webapp/.dockerignore b/modules/webapp/.dockerignore new file mode 100644 index 0000000..9054e71 --- /dev/null +++ b/modules/webapp/.dockerignore @@ -0,0 +1,4 @@ +src/main/angular/node_modules +src/main/angular/dist +src/main/angular/node +src/main/angular/.angular diff --git a/modules/webapp/Dockerfile b/modules/webapp/Dockerfile new file mode 100644 index 0000000..1cb842c --- /dev/null +++ b/modules/webapp/Dockerfile @@ -0,0 +1,31 @@ +FROM maven:3.9.9-eclipse-temurin-21 AS dependencies +WORKDIR /app +COPY pom.xml . +COPY modules/cli-wrapper/pom.xml modules/cli-wrapper/pom.xml +COPY modules/core/pom.xml modules/core/pom.xml +COPY modules/rest-api/pom.xml modules/rest-api/pom.xml +COPY modules/webapp/pom.xml modules/webapp/pom.xml + +RUN mvn dependency:go-offline -B -e -DskipTests -DexcludeArtifactsIds=podo-generator-core + +FROM maven:3.9.9-eclipse-temurin-21 AS builder +LABEL authors="gpspatacean" + +WORKDIR /app +COPY --from=dependencies /root/.m2 /root/.m2 +COPY pom.xml . +COPY modules modules + +RUN mvn clean package -pl modules/webapp -am -B -e -DskipTests + +FROM eclipse-temurin:21-jre +WORKDIR /app + +RUN useradd -m -s /usr/sbin/nologin appuser +USER appuser + +COPY --from=builder /app/modules/webapp/target/*.jar /app/app.jar + +EXPOSE 8081 + +ENTRYPOINT ["java", "-jar", "/app/app.jar"]