| FROM node:20-slim
|
|
|
|
|
| RUN npm install -g pnpm && \
|
| apt-get update && \
|
| apt-get install -y python3 make g++ && \
|
| rm -rf /var/lib/apt/lists/*
|
|
|
| WORKDIR /app
|
|
|
|
|
| COPY .npmrc ./
|
|
|
|
|
| COPY package.json pnpm-lock.yaml ./
|
| COPY pnpm-workspace-hf.yaml ./pnpm-workspace.yaml
|
| COPY tsconfig.base.json tsconfig.json ./
|
|
|
|
|
| COPY artifacts ./artifacts
|
| COPY lib ./lib
|
| COPY start.sh ./start.sh
|
| RUN chmod +x ./start.sh
|
|
|
|
|
| RUN pnpm install --no-frozen-lockfile
|
|
|
|
|
| RUN echo "=== Rebuilding better-sqlite3 ===" && \
|
| cd node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3 && \
|
| npm run build-release && \
|
| echo "=== better-sqlite3 rebuild completed ==="
|
|
|
|
|
| RUN echo "=== Checking esbuild ===" && pnpm list esbuild || echo "esbuild not found"
|
| RUN echo "=== Checking vite ===" && pnpm list vite || echo "vite not found"
|
| RUN echo "=== Checking typescript ===" && pnpm list typescript || echo "typescript not found"
|
|
|
|
|
| ENV NODE_ENV=production
|
| ENV PORT=7860
|
| ENV DATABASE_URL=file:/data/sqlite.db
|
| ENV TEMP_STORAGE_PATH=/app/temp-storage
|
| ENV NODE_PATH=/app/node_modules
|
|
|
|
|
| RUN echo "=== Starting frontend build ===" && \
|
| cd artifacts/image-gen && \
|
| pnpm run build && \
|
| echo "=== Frontend build completed ==="
|
|
|
|
|
| RUN echo "=== Starting backend build ===" && \
|
| cd artifacts/api-server && \
|
| pnpm run build && \
|
| echo "=== Backend build completed ==="
|
|
|
|
|
| RUN echo "=== Checking better-sqlite3 ===" && \
|
| pnpm list better-sqlite3 || echo "better-sqlite3 not found in workspace" && \
|
| ls -la node_modules/.pnpm/ | grep better-sqlite3 || echo "better-sqlite3 not in .pnpm"
|
|
|
|
|
| RUN mkdir -p /data /app/temp-storage && \
|
| chmod 777 /data /app/temp-storage
|
|
|
|
|
| EXPOSE 7860
|
|
|
|
|
| CMD ["./start.sh"]
|
|
|