From 38d85342f77ed03c587454a7b341687c8276765b Mon Sep 17 00:00:00 2001 From: BinarySandia04 Date: Tue, 17 Mar 2026 18:16:06 +0100 Subject: [PATCH] jdsjkdj --- .gitea/workflows/deploy.yml | 94 +++++++++---------------------------- aranroig/.dockerignore | 7 +++ aranroig/Dockerfile | 31 ++++++++++++ backend/Dockerfile | 23 +++++++++ docker-compose.yml | 13 +++++ nginx/nginx.conf | 18 +++++++ 6 files changed, 114 insertions(+), 72 deletions(-) create mode 100644 aranroig/.dockerignore create mode 100644 aranroig/Dockerfile create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml create mode 100644 nginx/nginx.conf diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index ac20f85..5570703 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -5,20 +5,15 @@ on: branches: [master] jobs: - frontend: + build: runs-on: docker - container: image: node:20 - - defaults: - run: - working-directory: ./aranroig - + steps: - name: Checkout uses: actions/checkout@v4 - + - name: Install SSH client run: | apt-get update && apt-get install -y openssh-client @@ -32,78 +27,33 @@ jobs: # Add the container host to known_hosts ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - - name: Install deps - run: npm i - - - name: Build - run: npm run build - - - name: Compress build - run: tar -czf build.tar.gz .output - - - name: Deploy frontend to server + - name: Log in to registry run: | - scp build.tar.gz deploy@${{ secrets.DEPLOY_HOST }}:/tmp/ - ssh deploy@${{ secrets.DEPLOY_HOST }} << 'EOF' - rm -rf /var/www/app/.output - tar -xzf /tmp/build.tar.gz -C /var/www/app - EOF + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login git.aranroig.com \ + -u ${{ secrets.REGISTRY_USER }} \ + --password-stdin - backend: - runs-on: docker - container: - image: node:20 - defaults: - run: - working-directory: ./ - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install SSH client + - name: Build frontend run: | - apt-get update && apt-get install -y openssh-client + docker build -t git.aranroig.com/${{ secrets.REGISTRY_USER }}/aranroig-frontend:latest ./frontend + docker push gitea.example.com/${{ secrets.REGISTRY_USER }}/aranroig-frontend:latest - - name: Setup SSH inside container + - name: Build backend run: | - mkdir -p ~/.ssh - echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 + docker build -t git.aranroig.com/${{ secrets.REGISTRY_USER }}/aranroig-backend:latest ./backend + docker push git.aranroig.com/${{ secrets.REGISTRY_USER }}/aranroig-backend:latest - # Add the container host to known_hosts - ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts + - name: Copy files + run: | + scp docker-compose.yml deploy@${{ secrets.DEPLOY_HOST}}:/var/www/app/ + scp nginx/ deploy@${{ secrets.DEPLOY_HOST }}:/var/www/app/ - - name: Compress backend - run: tar -czf backend.tar.gz backend - - - name: Send backend to server - run: scp backend.tar.gz deploy@${{ secrets.DEPLOY_HOST }}:/tmp/ - - - name: Unpack backend + - name: Deploy run: | ssh deploy@${{ secrets.DEPLOY_HOST }} << 'EOF' - rm -rf /var/www/app/backend - tar -xzf /tmp/backend.tar.gz -C /var/www/app - EOF - - - name: Install dependencies on server - run: | - ssh deploy@${{ secrets.DEPLOY_HOST }} << 'EOF' - cd /var/www/app/backend/ && npm i - EOF - - - deploy: - runs-on: docker - container: - image: node:20 - needs: [frontend, backend] - steps: - - name: Copy ecosystem file - run: scp ecosystem.config.js deploy@${{ secrets.DEPLOY_HOST }}:/var/www/app/ - - name: Restart server - run: | - ssh deploy@${{ secrets.DEPLOY_HOST }} << 'EOF' - sudo systemctl restart app + cd /var/www/app/ + docker compose pull + docker compose up -d EOF diff --git a/aranroig/.dockerignore b/aranroig/.dockerignore new file mode 100644 index 0000000..f84987a --- /dev/null +++ b/aranroig/.dockerignore @@ -0,0 +1,7 @@ +node_modules +.git +.gitignore +Dockerfile +.dockerignore +npm-debug.log +.env diff --git a/aranroig/Dockerfile b/aranroig/Dockerfile new file mode 100644 index 0000000..a176bdc --- /dev/null +++ b/aranroig/Dockerfile @@ -0,0 +1,31 @@ +# ---------- Build Stage ---------- +FROM node:20-alpine AS builder + +WORKDIR /app + +# Copy package files +COPY package*.json ./ + +# Install dependencies +RUN npm install + +# Copy project files +COPY . . + +# Build the Nuxt app +RUN npm run build + + +# ---------- Production Stage ---------- +FROM node:20-alpine + +WORKDIR /app + +# Copy built output +COPY --from=builder /app/.output ./.output + +# Expose Nuxt port +EXPOSE 3000 + +# Start Nuxt production server +CMD ["node", ".output/server/index.mjs"] diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..d1fbd37 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,23 @@ +# Use official Node.js runtime +FROM node:20-alpine + +# Create app directory +WORKDIR /usr/src/app + +# Copy package files first (better caching) +COPY package*.json ./ + +# Install dependencies +RUN npm ci --only=production + +# Copy application source +COPY . . + +# Expose the app port +# EXPOSE 3000 + +# Environment variable +ENV NODE_ENV=production + +# Start the application +CMD ["node", "src/index.js"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd526bd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.9" + +services: + nginx: + image: nginx:latest + ports: + - "3000:80" + + frontend: + image: git.aranroig.com/Syndria98/aranroig-frontend:latest + + backend: + image: git.aranroig.com/Syndria98/aranroig-backend:latest diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..e814d8c --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,18 @@ +events {} + +http { + server { + listen 80; + server_name _; + + location / { + proxy_pass http://frontend:3000; + + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + } +}