trigo / Dockerfile
k-l-lambda's picture
Fix Docker build: copy inc/ before esbuild, allow .env.local
a6949ee
raw
history blame
1.17 kB
FROM node:20-slim
ENV DEBIAN_FRONTEND=noninteractive
# Build timestamp: 2026-01-13T01:30
WORKDIR /app
# Install esbuild globally
RUN npm install -g esbuild
# Copy backend package.json and install deps at root level
COPY trigo-web/backend/package.json ./package.json
RUN npm install --omit=dev
# Copy backend source and build
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/
RUN esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm \
--outfile=backend/dist/backend/src/server.js \
--external:express --external:socket.io --external:cors --external:dotenv --external:uuid
# Copy frontend dist (LFS files excluded via .dockerignore)
COPY trigo-web/app/dist/ ./app/dist/
# Copy public folder (ONNX excluded via .dockerignore)
COPY trigo-web/public/ ./public/
# Copy env files
COPY trigo-web/.env ./.env
COPY trigo-web/backend/.env ./backend/.env
COPY trigo-web/backend/.env.local ./backend/.env.local
ENV PORT=7860
ENV HOST=0.0.0.0
ENV NODE_ENV=production
EXPOSE 7860
CMD ["node", "backend/dist/backend/src/server.js"]