mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Adapt application to serve static files directly in production
Remove Vite dependency in production Dockerfile and server configuration, and serve static assets and SPA fallback from the built distribution directory. Replit-Commit-Author: Agent Replit-Commit-Session-Id: d396e5bd-e32d-4a20-9e7d-71e7102ddc6c Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/d396e5bd-e32d-4a20-9e7d-71e7102ddc6c/CrwFq15
This commit is contained in:
1 parent
c764fe6c15
commit
2aecaa2672
3 files changed
+211
-5
No files matched your search
@@ -81,6 +81,9 @@ RUN npm ci --only=production && npm cache clean --force
|
||||
COPY --from=build --chown=nextjs:nodejs /app/dist ./dist
|
||||
COPY --from=build --chown=nextjs:nodejs /app/shared ./shared
|
||||
|
||||
# Create symlink for public files to be accessible from dist
|
||||
RUN ln -sf /app/dist/public /app/dist/public
|
||||
|
||||
# Create uploads directory with proper permissions
|
||||
RUN mkdir -p /app/uploads && chown -R nextjs:nodejs /app/uploads
|
||||
|
||||
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
node:internal/modules/esm/resolve:873
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
|
||||
|
||||
|
||||
|
||||
^
|
||||
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
node:internal/modules/esm/resolve:873
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
|
||||
|
||||
|
||||
|
||||
^
|
||||
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
node:internal/modules/esm/resolve:873
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
|
||||
|
||||
|
||||
|
||||
^
|
||||
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
node:internal/modules/esm/resolve:873
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
|
||||
|
||||
|
||||
|
||||
^
|
||||
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
node:internal/modules/esm/resolve:873
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
|
||||
|
||||
|
||||
|
||||
^
|
||||
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js
|
||||
|
||||
at packageResolve (node:internal/modules/esm/resolve:873:9)
|
||||
|
||||
at moduleResolve (node:internal/modules/esm/resolve:946:18)
|
||||
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1188:11)
|
||||
|
||||
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12)
|
||||
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25)
|
||||
|
||||
at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38)
|
||||
|
||||
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38)
|
||||
|
||||
at ModuleJob._link (node:internal/modules/esm/module_job:130:49) {
|
||||
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
|
||||
}
|
||||
|
||||
Node.js v20.19.4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import express, { type Request, Response, NextFunction } from "express";
|
||||
import { setupVite, serveStatic } from "./vite.js";
|
||||
|
||||
// Production routes - simplified for Docker deployment
|
||||
import { createServer, type Server } from "http";
|
||||
import { storage } from "./storage.js";
|
||||
import { setupLocalAuth, requireAuth } from "./localAuth.production.js";
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname, join } from 'path';
|
||||
|
||||
// Get directory paths
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
console.log('🐳 PRODUCTION: Starting LogiFlow application');
|
||||
|
||||
@@ -124,8 +127,20 @@ app.use((err: any, _req: Request, res: Response, _next: NextFunction) => {
|
||||
throw err;
|
||||
});
|
||||
|
||||
// Production setup - serve static files
|
||||
serveStatic(app);
|
||||
// Serve static files directly in production (no Vite)
|
||||
const publicPath = join(__dirname, 'public');
|
||||
console.log('🐳 Serving static files from:', publicPath);
|
||||
|
||||
app.use('/assets', express.static(join(publicPath, 'assets')));
|
||||
app.use('/', express.static(publicPath));
|
||||
|
||||
// SPA fallback - serve index.html for all non-API routes
|
||||
app.get('*', (req, res, next) => {
|
||||
if (req.path.startsWith('/api/')) {
|
||||
return next();
|
||||
}
|
||||
res.sendFile(join(publicPath, 'index.html'));
|
||||
});
|
||||
|
||||
const port = process.env.PORT ? parseInt(process.env.PORT) : 3000;
|
||||
server.listen(port, "0.0.0.0", () => {
|
||||
|
||||
Reference in new issue
Block a user