From 383b644929fbf9ab5f388d2296460ab348df6e48 Mon Sep 17 00:00:00 2001 From: devops Date: Mon, 20 Jul 2026 00:30:48 +0000 Subject: [PATCH] Upload files to "workloads/ecommerce" --- workloads/ecommerce/.dockerignore | 7 ++++++ workloads/ecommerce/.env.example | 13 +++++++++++ workloads/ecommerce/Dockerfile | 34 +++++++++++++++++++++++++++++ workloads/ecommerce/components.json | 19 ++++++++++++++++ workloads/ecommerce/next.config.ts | 16 ++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 workloads/ecommerce/.dockerignore create mode 100644 workloads/ecommerce/.env.example create mode 100644 workloads/ecommerce/Dockerfile create mode 100644 workloads/ecommerce/components.json create mode 100644 workloads/ecommerce/next.config.ts diff --git a/workloads/ecommerce/.dockerignore b/workloads/ecommerce/.dockerignore new file mode 100644 index 0000000..0c607ae --- /dev/null +++ b/workloads/ecommerce/.dockerignore @@ -0,0 +1,7 @@ +.git +.gitea +.next +node_modules +npm-debug.log* +.env* +README.md diff --git a/workloads/ecommerce/.env.example b/workloads/ecommerce/.env.example new file mode 100644 index 0000000..cabe31d --- /dev/null +++ b/workloads/ecommerce/.env.example @@ -0,0 +1,13 @@ +HEADLESS_PROVIDER=mock +NEXT_PUBLIC_SITE_URL=https://shop.cruzcloud.net +NEXT_PUBLIC_WHATSAPP_URL=https://wa.link/rvcqqc +FREE_SHIPPING_THRESHOLD=250000 + +# Shopify Storefront API (optional) +SHOPIFY_STOREFRONT_URL= +SHOPIFY_STOREFRONT_TOKEN= +SHOPIFY_API_VERSION=2025-07 + +# Medusa REST (optional) +MEDUSA_BACKEND_URL= +MEDUSA_PUBLISHABLE_KEY= diff --git a/workloads/ecommerce/Dockerfile b/workloads/ecommerce/Dockerfile new file mode 100644 index 0000000..87049fa --- /dev/null +++ b/workloads/ecommerce/Dockerfile @@ -0,0 +1,34 @@ +FROM node:22-alpine AS deps +WORKDIR /app +COPY package.json ./ +RUN npm install --no-audit --no-fund + +FROM node:22-alpine AS builder +WORKDIR /app +ENV NEXT_TELEMETRY_DISABLED=1 +COPY --from=deps /app/node_modules ./node_modules +COPY . . +RUN npm run build + +FROM node:22-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production \ + NEXT_TELEMETRY_DISABLED=1 \ + HOSTNAME=0.0.0.0 \ + PORT=80 + +RUN apk add --no-cache libcap wget \ + && addgroup --system --gid 1001 nodejs \ + && adduser --system --uid 1001 nextjs \ + && setcap 'cap_net_bind_service=+ep' /usr/local/bin/node + +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs +EXPOSE 80 +HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + CMD wget -qO- http://127.0.0.1/api/health || exit 1 + +CMD ["node", "server.js"] diff --git a/workloads/ecommerce/components.json b/workloads/ecommerce/components.json new file mode 100644 index 0000000..461a755 --- /dev/null +++ b/workloads/ecommerce/components.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/workloads/ecommerce/next.config.ts b/workloads/ecommerce/next.config.ts new file mode 100644 index 0000000..23f2c0e --- /dev/null +++ b/workloads/ecommerce/next.config.ts @@ -0,0 +1,16 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + output: "standalone", + poweredByHeader: false, + compress: true, + images: { + formats: ["image/avif", "image/webp"], + deviceSizes: [360, 640, 768, 1024, 1280, 1536], + }, + experimental: { + optimizePackageImports: ["lucide-react", "motion"], + }, +}; + +export default nextConfig;