From 4c16df86be50ce0a9cdd180654200113a8c42c4b Mon Sep 17 00:00:00 2001 From: DanilsGit Date: Thu, 8 May 2025 21:40:26 -0500 Subject: [PATCH] Fix CD and add backend conections --- .github/workflows/develop-CD.yml | 16 ++++++++++++---- .github/workflows/master-CD.yml | 14 +++++++++++--- Dockerfile.local | 4 ++-- Dockerfile.prod | 23 ++++++++++++++++++++--- app/_lib/_firebase/firebase.config.ts | 5 ++--- docker-compose.yaml | 4 ++-- 6 files changed, 49 insertions(+), 17 deletions(-) diff --git a/.github/workflows/develop-CD.yml b/.github/workflows/develop-CD.yml index 541c693..f0cd50d 100644 --- a/.github/workflows/develop-CD.yml +++ b/.github/workflows/develop-CD.yml @@ -17,9 +17,18 @@ jobs: with: ref: develop - # 👉 Build la imagen Docker + # 👉 Build Docker image with Firebase args - name: Build Docker image - run: docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} . + run: | + docker build \ + --build-arg NEXT_PUBLIC_FIREBASE_API_KEY=${{ secrets.FIREBASE_API_KEY }} \ + --build-arg NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=${{ secrets.FIREBASE_AUTH_DOMAIN }} \ + --build-arg NEXT_PUBLIC_FIREBASE_PROJECT_ID=${{ secrets.FIREBASE_PROJECT_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=${{ secrets.FIREBASE_STORAGE_BUCKET }} \ + --build-arg NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.FIREBASE_MESSAGING_SENDER_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_APP_ID=${{ secrets.FIREBASE_APP_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=${{ secrets.FIREBASE_MEASUREMENT_ID }} \ + -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-dev:${{ github.sha }} . # 👉 Log in to DockerHub - name: DockerHub Login @@ -27,7 +36,7 @@ jobs: # 👉 Push la imagen - name: Push Docker image to DockerHub - run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} + run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-dev:${{ github.sha }} # 👉 Add VM to known_hosts - name: Add VM to known_hosts @@ -55,5 +64,4 @@ jobs: key: ${{ secrets.GCP_SSH_KEY }} script: | cd /home/proyectosdanils/ - docker compose down frontend-dev docker compose up -d frontend-dev diff --git a/.github/workflows/master-CD.yml b/.github/workflows/master-CD.yml index 2ae286f..7487e85 100644 --- a/.github/workflows/master-CD.yml +++ b/.github/workflows/master-CD.yml @@ -18,9 +18,18 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - # 👉 Build la imagen Docker + # 👉 Build Docker image with Firebase args - name: Build Docker image - run: docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} . + run: | + docker build \ + --build-arg NEXT_PUBLIC_FIREBASE_API_KEY=${{ secrets.FIREBASE_API_KEY }} \ + --build-arg NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=${{ secrets.FIREBASE_AUTH_DOMAIN }} \ + --build-arg NEXT_PUBLIC_FIREBASE_PROJECT_ID=${{ secrets.FIREBASE_PROJECT_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=${{ secrets.FIREBASE_STORAGE_BUCKET }} \ + --build-arg NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.FIREBASE_MESSAGING_SENDER_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_APP_ID=${{ secrets.FIREBASE_APP_ID }} \ + --build-arg NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=${{ secrets.FIREBASE_MEASUREMENT_ID }} \ + -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} . # 👉 Log in to DockerHub - name: DockerHub Login @@ -56,5 +65,4 @@ jobs: key: ${{ secrets.GCP_SSH_KEY }} script: | cd /home/proyectosdanils/ - docker compose down frontend-prod docker compose up -d frontend-prod \ No newline at end of file diff --git a/Dockerfile.local b/Dockerfile.local index 2f3b06e..758cfd1 100644 --- a/Dockerfile.local +++ b/Dockerfile.local @@ -1,8 +1,8 @@ FROM node:22-slim -RUN mkdir -p /home/frontend-dev +RUN mkdir -p /app -WORKDIR /home/frontend-dev +WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci diff --git a/Dockerfile.prod b/Dockerfile.prod index b44a2df..14b440d 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -1,14 +1,31 @@ FROM node:22-alpine -RUN mkdir -p /home/frontend-prod +RUN mkdir -p /app -WORKDIR /home/frontend-prod +WORKDIR /app -COPY package.json package-lock.json ./ +COPY package.json ./ RUN npm install COPY . . +ARG NEXT_PUBLIC_FIREBASE_API_KEY +ARG NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN +ARG NEXT_PUBLIC_FIREBASE_PROJECT_ID +ARG NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET +ARG NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID +ARG NEXT_PUBLIC_FIREBASE_APP_ID +ARG NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID + +ENV NEXT_PUBLIC_FIREBASE_API_KEY=$NEXT_PUBLIC_FIREBASE_API_KEY +ENV NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=$NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN +ENV NEXT_PUBLIC_FIREBASE_PROJECT_ID=$NEXT_PUBLIC_FIREBASE_PROJECT_ID +ENV NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=$NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET +ENV NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=$NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID +ENV NEXT_PUBLIC_FIREBASE_APP_ID=$NEXT_PUBLIC_FIREBASE_APP_ID +ENV NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=$NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID + + RUN npm run build EXPOSE 3000 diff --git a/app/_lib/_firebase/firebase.config.ts b/app/_lib/_firebase/firebase.config.ts index 649b485..d9670c7 100644 --- a/app/_lib/_firebase/firebase.config.ts +++ b/app/_lib/_firebase/firebase.config.ts @@ -1,5 +1,4 @@ -'use client'; -import { initializeApp } from 'firebase/app'; +import { getApp, getApps, initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; const firebaseConfig = { @@ -12,5 +11,5 @@ const firebaseConfig = { measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID, }; -const app = initializeApp(firebaseConfig); +const app = getApps().length > 0 ? getApp() : initializeApp(firebaseConfig); export const auth = getAuth(app); diff --git a/docker-compose.yaml b/docker-compose.yaml index df927df..6ffe5a5 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,8 +6,8 @@ services: ports: - '3000:3000' volumes: - - .:/home/frontend-dev + - .:/app environment: - NODE_ENV=development env_file: - - .env + - .env \ No newline at end of file