FROM node:20-slim ENV DEBIAN_FRONTEND=noninteractive # Build timestamp: 2026-01-13T03:05 WORKDIR /app # Install esbuild globally RUN npm install -g esbuild # Copy backend package.json and install deps for bundling COPY trigo-web/backend/package.json ./package.json RUN npm install # Copy backend source RUN mkdir -p backend backend/dist/backend/src COPY trigo-web/backend/src/ ./backend/src/ # Copy inc folder (needed for esbuild) COPY trigo-web/inc/ ./inc/ # Bundle EVERYTHING into one file (no external deps) RUN esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm \ --outfile=backend/dist/backend/src/server.js # Copy frontend dist COPY trigo-web/app/dist/ ./app/dist/ # Copy env files COPY trigo-web/backend/.env ./backend/.env COPY trigo-web/backend/.env.local ./backend/.env.local # Verify server file RUN ls -la backend/dist/backend/src/server.js ENV PORT=7860 ENV HOST=0.0.0.0 ENV NODE_ENV=production EXPOSE 7860 CMD ["node", "backend/dist/backend/src/server.js"]