k-l-lambda commited on
Commit
654dfbb
·
1 Parent(s): aba34fa

Test: full esbuild bundle with external deps

Browse files
Files changed (1) hide show
  1. Dockerfile +21 -14
Dockerfile CHANGED
@@ -2,33 +2,40 @@ FROM node:20-slim
2
 
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
- # Build timestamp: 2026-01-13T03:35
6
 
7
  WORKDIR /app
8
 
 
 
 
9
  # Copy backend package.json and install deps
10
  COPY trigo-web/backend/package.json ./package.json
11
  RUN npm install --omit=dev
12
 
13
- # Create a test server with Express + Socket.io
14
- RUN echo 'import express from "express"; \
15
- import { createServer } from "http"; \
16
- import { Server } from "socket.io"; \
17
- const app = express(); \
18
- const httpServer = createServer(app); \
19
- const io = new Server(httpServer, { cors: { origin: true } }); \
20
- const port = process.env.PORT || 7860; \
21
- app.use(express.static("app/dist")); \
22
- app.get("/health", (req, res) => res.json({status: "ok"})); \
23
- io.on("connection", (socket) => console.log("Client connected:", socket.id)); \
24
- httpServer.listen(port, "0.0.0.0", () => console.log("Server running on port " + port));' > server.js
25
 
26
  # Copy frontend dist
27
  COPY trigo-web/app/dist/ ./app/dist/
28
 
 
 
 
 
29
  ENV PORT=7860
 
30
  ENV NODE_ENV=production
31
 
32
  EXPOSE 7860
33
 
34
- CMD ["node", "server.js"]
 
2
 
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
+ # Build timestamp: 2026-01-13T03:45
6
 
7
  WORKDIR /app
8
 
9
+ # Install esbuild globally
10
+ RUN npm install -g esbuild
11
+
12
  # Copy backend package.json and install deps
13
  COPY trigo-web/backend/package.json ./package.json
14
  RUN npm install --omit=dev
15
 
16
+ # Copy backend source
17
+ RUN mkdir -p backend/dist/backend/src
18
+ COPY trigo-web/backend/src/ ./backend/src/
19
+
20
+ # Copy inc folder (needed for esbuild)
21
+ COPY trigo-web/inc/ ./inc/
22
+
23
+ # Bundle with ESM format, external deps
24
+ RUN esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm \
25
+ --outfile=backend/dist/backend/src/server.js \
26
+ --external:express --external:socket.io --external:cors --external:dotenv --external:uuid
 
27
 
28
  # Copy frontend dist
29
  COPY trigo-web/app/dist/ ./app/dist/
30
 
31
+ # Copy env files
32
+ COPY trigo-web/backend/.env ./backend/.env
33
+ COPY trigo-web/backend/.env.local ./backend/.env.local
34
+
35
  ENV PORT=7860
36
+ ENV HOST=0.0.0.0
37
  ENV NODE_ENV=production
38
 
39
  EXPOSE 7860
40
 
41
+ CMD ["node", "backend/dist/backend/src/server.js"]