From 1734c2f11dfd4cac94186710e92cc1617c2d6e38 Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 01:44:55 +0530 Subject: [PATCH 1/8] Created docker-publish.yml --- .github/workflows/docker-publish.yml | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/docker-publish.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..51ebf91 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,31 @@ +name: Docker Build & Push + +on: + push: + branches: [ "master", "SetupDocker" ] + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . # Uses the Dockerfile in the root folder + push: true + tags: | + brother5012/microforge:latest + brother5012/microforge:${{ github.sha }} \ No newline at end of file From a67cb906ce8a7e821634a726dfc6837587dd16cb Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 01:50:21 +0530 Subject: [PATCH 2/8] Improved tags --- .github/workflows/docker-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 51ebf91..0a8baeb 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -27,5 +27,5 @@ jobs: context: . # Uses the Dockerfile in the root folder push: true tags: | - brother5012/microforge:latest - brother5012/microforge:${{ github.sha }} \ No newline at end of file + ${{ secrets.DOCKER_USERNAME }}/microforge:latest + ${{ secrets.DOCKER_USERNAME }}/microforge:${{ github.sha }} \ No newline at end of file From 195ac469a84c132ff7509eb8809a9cfc65481993 Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:06:55 +0530 Subject: [PATCH 3/8] Added DockerFile --- Dockerfile | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..98a578a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,116 @@ +# Dockerfile for MicroForge + +# ============================================================================== +# Auth Service +# ============================================================================== +FROM golang:1.25.1-bookworm AS auth-service-builder + +WORKDIR /usr/src/app + +COPY ./src/auth-service/go.mod ./src/auth-service/go.sum ./ +RUN go mod download + +COPY ./src/auth-service/ ./ + +RUN CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -ldflags "-s -w" -o /auth-service main.go + +FROM gcr.io/distroless/static-debian12:nonroot AS auth-service +WORKDIR /usr/src/app + +COPY --from=auth-service-builder /auth-service ./ + +EXPOSE 8082 + +ENTRYPOINT [ "./auth-service" ] + +# ============================================================================== +# Frontend Service +# ============================================================================== +FROM docker.io/library/node:22-slim AS frontend-service-builder + +WORKDIR /app + +COPY ./src/frontend-service/package.json ./src/frontend-service/package-lock.json ./ +RUN npm ci + +COPY ./src/frontend-service/src/ ./src/ +COPY ./src/frontend-service/public/ ./public/ + +RUN npm run build + +FROM nginx:alpine AS frontend-service +COPY --from=frontend-service-builder /app/build /usr/share/nginx/html +COPY ./src/frontend-service/nginx.conf /etc/nginx/conf.d/default.conf +COPY ./src/frontend-service/config.template.json /usr/share/nginx/html/config.template.json +COPY ./src/frontend-service/frontendEntrypoint.sh /frontendEntrypoint.sh +RUN chmod +x /frontendEntrypoint.sh + +EXPOSE 80 +ENTRYPOINT [ "/frontendEntrypoint.sh" ] + +# ============================================================================== +# Login Service +# ============================================================================== +FROM eclipse-temurin:21.0.5_11-jdk-jammy AS login-service-builder + +WORKDIR /app + +COPY ./src/login-service/mvnw ./src/login-service/.mvn ./ +COPY ./src/login-service/pom.xml ./ + +RUN chmod +x mvnw && ./mvnw dependency:go-offline + +COPY ./src/login-service/src ./src/ + +RUN ./mvnw clean package -DskipTests + +FROM gcr.io/distroless/java21-debian12:latest AS login-service + +WORKDIR /app + +COPY --from=login-service-builder /app/target/login-service-1.0.0.jar login-service.jar + +EXPOSE 8081 + +ENTRYPOINT [ "java" , "-jar", "login-service.jar" ] + +# ============================================================================== +# Metadata Service +# ============================================================================== +FROM docker.io/library/python:3.12-alpine3.22 AS metadata-service-builder + +RUN apk update && \ + apk add gcc g++ linux-headers + +WORKDIR /app + +COPY ./src/metadata-service/requirements.txt requirements.txt + +RUN python -m venv /opt/venv && \ + /opt/venv/bin/pip install -r requirements.txt + +FROM docker.io/library/python:3.12-alpine3.22 AS metadata-service + +COPY --from=metadata-service-builder /opt/venv /opt/venv + +WORKDIR /app + +COPY ./src/metadata-service/ . + +CMD ["/opt/venv/bin/gunicorn", "app:app", "--workers", "4", "--bind", "0.0.0.0:8084"] + +# ============================================================================== +# Notification Service +# ============================================================================== +FROM node:18-alpine AS notification-service-builder +WORKDIR /app +COPY ./src/notification-service/package.json ./src/notification-service/package-lock.json ./ +RUN npm ci + +FROM gcr.io/distroless/nodejs18-debian11:nonroot AS notification-service +WORKDIR /app + +COPY --from=notification-service-builder /app/node_modules ./node_modules +COPY ./src/notification-service/ . + +CMD [ "app.js" ] From 113d46a4a56cb72ff84de8a3add9502e987c0152 Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:07:29 +0530 Subject: [PATCH 4/8] Updated docker-publish --- .github/workflows/docker-publish.yml | 31 +++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 0a8baeb..b147f21 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -2,11 +2,27 @@ name: Docker Build & Push on: push: - branches: [ "master", "SetupDocker" ] + branches: [ "master" ] jobs: build-and-push: runs-on: ubuntu-latest + + # MATRIX STRATEGY: This runs the job 5 times in parallel! + strategy: + fail-fast: false + matrix: + include: + - service: auth-service + image-name: auth-service + - service: frontend-service + image-name: frontend-service + - service: login-service + image-name: login-service + - service: metadata-service + image-name: metadata-service + - service: notification-service + image-name: notification-service steps: - name: Checkout code @@ -21,11 +37,16 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build and push + - name: Build and push ${{ matrix.service }} uses: docker/build-push-action@v5 with: - context: . # Uses the Dockerfile in the root folder + context: . + file: ./Dockerfile push: true + # THE MAGIC PART: We specify exactly which 'stage' to build + target: ${{ matrix.service }} + + # This creates tags like: yourname/microforge-auth-service:latest tags: | - ${{ secrets.DOCKER_USERNAME }}/microforge:latest - ${{ secrets.DOCKER_USERNAME }}/microforge:${{ github.sha }} \ No newline at end of file + ${{ secrets.DOCKER_USERNAME }}/microforge-${{ matrix.image-name }}:latest + ${{ secrets.DOCKER_USERNAME }}/microforge-${{ matrix.image-name }}:${{ github.sha }} \ No newline at end of file From 31b993b218e68ed21a7f292640066408de89c0d0 Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:10:01 +0530 Subject: [PATCH 5/8] Fixed docker-publish --- .github/workflows/docker-publish.yml | 47 ++++++++++++++-------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index b147f21..a1537d5 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,28 +1,30 @@ -name: Docker Build & Push +name: Docker Build & Push Services on: push: - branches: [ "master" ] + branches: [ "master", "SetupDocker" ] jobs: - build-and-push: + build-and-push-services: runs-on: ubuntu-latest - - # MATRIX STRATEGY: This runs the job 5 times in parallel! strategy: - fail-fast: false matrix: - include: - - service: auth-service - image-name: auth-service - - service: frontend-service - image-name: frontend-service - - service: login-service - image-name: login-service - - service: metadata-service - image-name: metadata-service - - service: notification-service - image-name: notification-service + service: + - name: auth-service + image_suffix: microforge-auth-service + version: v1.0.0 + - name: frontend-service + image_suffix: microforge-frontend-service + version: v1.1.0 + - name: login-service + image_suffix: microforge-login-service + version: v1.1.0 + - name: metadata-service + image_suffix: microforge-metadata-service + version: v1.0.0 + - name: notification-service + image_suffix: microforge-notification-service + version: v1.0.0 steps: - name: Checkout code @@ -37,16 +39,13 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build and push ${{ matrix.service }} + - name: Build and push uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile + target: ${{ matrix.service.name }} push: true - # THE MAGIC PART: We specify exactly which 'stage' to build - target: ${{ matrix.service }} - - # This creates tags like: yourname/microforge-auth-service:latest tags: | - ${{ secrets.DOCKER_USERNAME }}/microforge-${{ matrix.image-name }}:latest - ${{ secrets.DOCKER_USERNAME }}/microforge-${{ matrix.image-name }}:${{ github.sha }} \ No newline at end of file + ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service.image_suffix }}:${{ matrix.service.version }} + ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service.image_suffix }}:latest From bee50daa172b4745ca2041076801cf59a61f555f Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:12:58 +0530 Subject: [PATCH 6/8] removed docker.yml --- .github/workflows/docker.yaml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/workflows/docker.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml deleted file mode 100644 index efc65f8..0000000 --- a/.github/workflows/docker.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Build, Test and Push Docker Image -on: - push: - branches: - - master - -jobs: - docker-build: - runs-on: ubuntu-latest - defaults: - run: - shell: bash - working-directory: ./src - strategy: - matrix: - service: - - name: login-service - image: manojmdocker14/microforge-login-service - - name: auth-service - image: manojmdocker14/microforge-auth-service - - name: frontend-service - image: manojmdocker14/microforge-frontend-service - - name: metadata-service - image: manojmdocker14/microforge-metadata-service - - name: notification-service - image: manojmdocker14/microforge-notification-service \ No newline at end of file From c3cc2ebb26edc98a742458e05588cba8665b8ce2 Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:16:30 +0530 Subject: [PATCH 7/8] Fixed issue in building login service --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 98a578a..96b05c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,8 @@ FROM eclipse-temurin:21.0.5_11-jdk-jammy AS login-service-builder WORKDIR /app -COPY ./src/login-service/mvnw ./src/login-service/.mvn ./ +COPY ./src/login-service/mvnw ./ +COPY ./src/login-service/.mvn/ ./.mvn/ COPY ./src/login-service/pom.xml ./ RUN chmod +x mvnw && ./mvnw dependency:go-offline From 148e2d6b20358e4dc9b369f0dd466ccbe44dba1b Mon Sep 17 00:00:00 2001 From: parth5012 Date: Sat, 10 Jan 2026 02:26:29 +0530 Subject: [PATCH 8/8] Removed testing branch name --- .github/workflows/docker-publish.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index a1537d5..2362e1c 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -2,7 +2,7 @@ name: Docker Build & Push Services on: push: - branches: [ "master", "SetupDocker" ] + branches: [ "master"] jobs: build-and-push-services: @@ -49,3 +49,4 @@ jobs: tags: | ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service.image_suffix }}:${{ matrix.service.version }} ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service.image_suffix }}:latest + ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service.image_suffix }}:${{github.sha}}