diff --git a/Dockerfile b/Dockerfile
index 4b9eb39c3038c00c0e38905bfc596aa9a2ebddca..34e7229b0a0414f0d690ecf9f3b92bf696d6091b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,27 +1,60 @@
-# Use a specific version of the JDK image to ensure consistency
-FROM eclipse-temurin:19-jdk-alpine AS build
+## Use a specific version of the JDK image to ensure consistency
+#FROM eclipse-temurin:19-jdk-alpine AS build
+#
+## Set the working directory
+#WORKDIR /app
+#
+## Copy the pom.xml file first, and then download dependencies separately to take advantage of Docker layer caching
+#COPY pom.xml .
+#RUN apk add maven
+#RUN mvn dependency:go-offline
+#
+## Copy the source code and package the application
+#COPY src ./src
+#RUN mvn clean package
+#
+## Use a new stage to reduce the final image size
+#FROM eclipse-temurin:19-jre-alpine
+#
+## Set the working directory
+#WORKDIR /app
+#
+## Copy the packaged application from the build stage
+#COPY --from=build /app/target/SmartMat-0.0.1-SNAPSHOT.jar ./SmartMat.jar
+#
+## Define the entrypoint and expose the application port
+#ENTRYPOINT ["java","-jar","SmartMat.jar"]
+#EXPOSE 8080
+#
+# Use the official Maven image as the base image
+FROM maven:3.6.3-jdk-11 as builder
 
 # Set the working directory
 WORKDIR /app
 
-# Copy the pom.xml file first, and then download dependencies separately to take advantage of Docker layer caching
+# Copy the pom.xml file to the working directory
 COPY pom.xml .
-RUN apk add maven
+
+# Download and cache dependencies to improve build times
 RUN mvn dependency:go-offline
 
-# Copy the source code and package the application
+# Copy the rest of the application code
 COPY src ./src
+
+# Build the application and package it as a JAR file
 RUN mvn clean package
 
-# Use a new stage to reduce the final image size
-FROM eclipse-temurin:19-jre-alpine
+# Use the official OpenJDK image as the runtime image
+FROM openjdk:11-jre-slim
 
 # Set the working directory
 WORKDIR /app
 
-# Copy the packaged application from the build stage
-COPY --from=build /app/target/SmartMat-0.0.1-SNAPSHOT.jar ./SmartMat.jar
+# Copy the JAR file from the builder stage
+COPY --from=builder /app/target/*.jar ./app.jar
 
-# Define the entrypoint and expose the application port
-ENTRYPOINT ["java","-jar","SmartMat.jar"]
+# Expose the port the application will run on
 EXPOSE 8080
+
+# Run the application
+CMD ["java", "-jar", "app.jar"]
\ No newline at end of file
diff --git a/src/.github/workflows/build.yml b/src/.github/workflows/build.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5ffe46e84593b966c451dd5759460a45fea4c84a
--- /dev/null
+++ b/src/.github/workflows/build.yml
@@ -0,0 +1,39 @@
+name: Build
+
+on:
+  push:
+    branches:
+      - main
+  pull_request:
+    branches:
+      - main
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+
+    - name: Set up JDK 11
+      uses: actions/setup-java@v2
+      with:
+        java-version: '11'
+        distribution: 'adopt'
+
+    - name: Cache Maven dependencies
+      uses: actions/cache@v2
+      with:
+        path: ~/.m2
+        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+        restore-keys: ${{ runner.os }}-m2
+
+    - name: Build with Maven
+      run: mvn clean install -B
+
+    - name: Upload JAR file
+      uses: actions/upload-artifact@v2
+      with:
+        name: my-jar-file
+        path: target/*.jar
\ No newline at end of file