FROM node:20-bullseye AS deps WORKDIR /app COPY ui/package*.json ./ui/ RUN cd ui && npm install --ignore-scripts FROM node:20-bullseye AS build ARG HF_OAUTH_CLIENT_ID=bfa7db67-cf78-4a4b-8232-69d855ea836b ARG NEXT_PUBLIC_HF_OAUTH_CLIENT_ID=bfa7db67-cf78-4a4b-8232-69d855ea836b ARG HF_OAUTH_REDIRECT_URI=https://multimodalart-ai-toolkit.hf.space/auth/hf/callback ARG NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI=https://multimodalart-ai-toolkit.hf.space/auth/hf/callback WORKDIR /app COPY . . COPY --from=deps /app/ui/node_modules ./ui/node_modules WORKDIR /app/ui ENV NODE_ENV=production \ NEXT_PUBLIC_DB_MODE=browser \ HF_OAUTH_CLIENT_ID=${HF_OAUTH_CLIENT_ID} \ NEXT_PUBLIC_HF_OAUTH_CLIENT_ID=${NEXT_PUBLIC_HF_OAUTH_CLIENT_ID} \ HF_OAUTH_REDIRECT_URI=${HF_OAUTH_REDIRECT_URI} \ NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI=${NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI} RUN npx prisma generate && npm run build FROM node:20-bullseye-slim AS runner ARG HF_OAUTH_CLIENT_ID=bfa7db67-cf78-4a4b-8232-69d855ea836b ARG NEXT_PUBLIC_HF_OAUTH_CLIENT_ID=bfa7db67-cf78-4a4b-8232-69d855ea836b ARG HF_OAUTH_REDIRECT_URI=https://multimodalart-ai-toolkit.hf.space/auth/hf/callback ARG NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI=https://multimodalart-ai-toolkit.hf.space/auth/hf/callback WORKDIR /app/ui ENV NODE_ENV=production \ NEXT_PUBLIC_DB_MODE=browser \ NEXT_TELEMETRY_DISABLED=1 \ PORT=7860 \ DATA_ROOT=/data \ DATASETS_FOLDER=/data/datasets \ TRAINING_FOLDER=/data/output \ HF_JOBS_DEFAULT_HARDWARE=a100-large \ HF_OAUTH_CLIENT_ID=${HF_OAUTH_CLIENT_ID} \ NEXT_PUBLIC_HF_OAUTH_CLIENT_ID=${NEXT_PUBLIC_HF_OAUTH_CLIENT_ID} \ HF_OAUTH_REDIRECT_URI=${HF_OAUTH_REDIRECT_URI} \ NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI=${NEXT_PUBLIC_HF_OAUTH_REDIRECT_URI} # Expect HF_OAUTH_CLIENT_SECRET to be provided at runtime. ENV HF_OAUTH_CLIENT_SECRET="" RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip git curl ca-certificates bash tini \ && pip3 install --no-cache-dir "huggingface_hub[cli]" \ && curl -LsSf https://astral.sh/uv/install.sh | bash \ && ln -s /root/.local/bin/uv /usr/local/bin/uv \ && apt-get clean && rm -rf /var/lib/apt/lists/* RUN mkdir -p /data/datasets /data/output /data/images && chmod -R 777 /data COPY --from=build /app /app COPY --from=deps /app/ui/node_modules ./node_modules EXPOSE 7860 ENTRYPOINT ["tini", "--"] CMD ["npm", "run", "start", "--", "--hostname", "0.0.0.0", "--port", "7860"]