fix: remove nginx, serve frontend from Express on port 3000, fix static path

This commit is contained in:
BetterHuman
2026-05-06 03:54:32 +00:00
parent af9873ffed
commit f5067cc19f
3 changed files with 8 additions and 13 deletions
+4 -7
View File
@@ -18,11 +18,11 @@ COPY backend/ ./
RUN npx prisma generate --schema=src/prisma/schema.prisma RUN npx prisma generate --schema=src/prisma/schema.prisma
RUN npm run build RUN npm run build
# Stage 3: Production (Debian slim to match build stage, avoiding Alpine musl/OpenSSL issues) # Stage 3: Production (Debian slim — same glibc as build, no musl/OpenSSL issues)
FROM node:20-slim FROM node:20-slim
WORKDIR /app WORKDIR /app
RUN apt-get update && apt-get install -y nginx openssl --no-install-recommends && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y openssl --no-install-recommends && rm -rf /var/lib/apt/lists/*
# Copy backend # Copy backend
COPY --from=backend-build /app/backend/dist ./dist COPY --from=backend-build /app/backend/dist ./dist
@@ -30,15 +30,12 @@ COPY --from=backend-build /app/backend/node_modules ./node_modules
COPY --from=backend-build /app/backend/src/prisma ./prisma COPY --from=backend-build /app/backend/src/prisma ./prisma
COPY backend/package.json ./package.json COPY backend/package.json ./package.json
# Copy frontend build # Copy frontend build — served by Express at /app/public
COPY --from=frontend-build /app/frontend/dist ./public COPY --from=frontend-build /app/frontend/dist ./public
# Nginx config
COPY nginx.conf /etc/nginx/nginx.conf
COPY start.sh ./ COPY start.sh ./
RUN chmod +x start.sh RUN chmod +x start.sh
EXPOSE 80 EXPOSE 3000
CMD ["./start.sh"] CMD ["./start.sh"]
+3 -2
View File
@@ -22,7 +22,7 @@ import settingsRouter from './routes/settings';
import notificationsRouter from './routes/notifications'; import notificationsRouter from './routes/notifications';
const app = express(); const app = express();
const PORT = process.env.PORT || 5000; const PORT = parseInt(process.env.PORT || '3000', 10);
// Security // Security
app.use(helmet({ contentSecurityPolicy: false })); app.use(helmet({ contentSecurityPolicy: false }));
@@ -71,7 +71,8 @@ app.use('/api/v1/settings', settingsRouter);
app.use('/api/v1/notifications', notificationsRouter); app.use('/api/v1/notifications', notificationsRouter);
// Serve frontend in production // Serve frontend in production
const frontendDist = path.join(__dirname, '../../public'); // __dirname = /app/dist, frontend is at /app/public
const frontendDist = path.join(__dirname, '../public');
app.use(express.static(frontendDist)); app.use(express.static(frontendDist));
app.get('*', (req, res) => { app.get('*', (req, res) => {
res.sendFile(path.join(frontendDist, 'index.html')); res.sendFile(path.join(frontendDist, 'index.html'));
+1 -4
View File
@@ -179,8 +179,5 @@ async function seed() {
seed(); seed();
" 2>/dev/null || echo "[start] Seed warning (continuing)" " 2>/dev/null || echo "[start] Seed warning (continuing)"
echo "[start] Starting nginx..." echo "[start] Starting Node.js backend on port 3000..."
nginx
echo "[start] Starting Node.js backend on port 5000..."
exec node dist/index.js exec node dist/index.js