| # Hugging Face Space (sdk: docker) build for the WEED-SIM Telegram Mini App. | |
| # Stage 1 builds the Vite client; stage 2 runs the Hono server on Node 22. | |
| FROM node:22-slim AS build | |
| WORKDIR /app | |
| COPY package.json package-lock.json ./ | |
| RUN npm ci | |
| COPY vite.config.ts ./ | |
| COPY tools ./tools | |
| COPY src ./src | |
| COPY public ./public | |
| RUN npm run build | |
| FROM node:22-slim | |
| # node:22-slim already ships a 'node' user at uid 1000 (the uid HF Spaces | |
| # expects); reuse it, and keep the app under /home/user/app so the Space's | |
| # bucket mount path stays valid. | |
| RUN mkdir -p /home/user/app && chown -R node:node /home/user | |
| USER node | |
| WORKDIR /home/user/app | |
| ENV NODE_ENV=production \ | |
| PORT=7860 \ | |
| WEEDSIM_DATA_DIR=/home/user/app/data | |
| COPY --chown=node package.json package-lock.json ./ | |
| RUN npm ci --omit=dev | |
| COPY --chown=node src/server ./src/server | |
| COPY --chown=node src/shared ./src/shared | |
| COPY --chown=node --from=build /app/dist/client ./dist/client | |
| EXPOSE 7860 | |
| CMD ["npx", "tsx", "src/server/index.ts"] | |