diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6ce781f2..155879d3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,9 +1,9 @@ + name: Deploy Frontend on: push: branches: - - main - supuni-dev jobs: @@ -14,19 +14,30 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install dependencies + run: npm install - - name: Build Docker image - run: docker build -t frontend-app . + - name: Build frontend + run: npm run build - - name: Copy files to EC2 + - name: Check build folder exists + run: | + if [ ! -d "build" ]; then + echo "❌ build folder not found. Check if 'npm run build' works." + exit 1 + fi + - name: Copy build folder to EC2 uses: appleboy/scp-action@master with: host: ${{ secrets.FRONTEND_EC2_IP }} username: ubuntu key: ${{ secrets.FRONTEND_EC2_SSH_KEY }} - source: "./" + source: "build" # ✅ Changed from dist to build target: "/home/ubuntu/frontend" - name: Deploy on EC2 via SSH @@ -35,9 +46,12 @@ jobs: host: ${{ secrets.FRONTEND_EC2_IP }} username: ubuntu key: ${{ secrets.FRONTEND_EC2_SSH_KEY }} + timeout: 600s + command_timeout: 600s script: | - cd frontend - docker build -t frontend-app . - docker stop frontend-app || true - docker rm frontend-app || true - docker run -d -p 80:80 --name frontend-app frontend-app + sudo apt-get update + sudo apt-get install -y nginx + sudo rm -rf /var/www/html/* + sudo cp -r /home/ubuntu/frontend/build/* /var/www/html/ # ✅ Changed dist → build + sudo systemctl restart nginx + echo "✅ Frontend deployed successfully!" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 91e00bdd..5cf178e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,25 @@ -FROM node:18-alpine AS build +FROM node:20-alpine AS build + +# Set working directory WORKDIR /app + +# Copy all files COPY . . + +# Install dependencies RUN npm install -RUN npm run build +# Increase memory limit and build the app +RUN NODE_OPTIONS="--max-old-space-size=4096" npm run build + +# Use Nginx to serve the built app FROM nginx:alpine + +# Copy the build output to Nginx public directory COPY --from=build /app/build /usr/share/nginx/html + +# Expose port 80 EXPOSE 80 + +# Start Nginx CMD ["nginx", "-g", "daemon off;"] diff --git a/src/Pages/Menu.jsx b/src/Pages/Menu.jsx index c6fc942b..53da728a 100644 --- a/src/Pages/Menu.jsx +++ b/src/Pages/Menu.jsx @@ -52,8 +52,8 @@ export default function MenuPage() { let list = category && category !== "All" ? items.filter( - (it) => it.category?.toLowerCase() === category.toLowerCase() - ) + (it) => it.category?.toLowerCase() === category.toLowerCase() + ) : [...items]; if (search.trim()) { @@ -136,11 +136,10 @@ export default function MenuPage() { @@ -246,9 +245,8 @@ export default function MenuPage() { {/* Toast */}