| |
|
|
| |
| FROM node:22-slim AS frontend-builder |
|
|
| WORKDIR /build |
|
|
| |
| COPY frontend/package*.json ./ |
| RUN npm ci |
|
|
| |
| COPY frontend/src ./src |
| COPY frontend/public ./public |
| COPY frontend/next.config.js ./ |
| COPY frontend/tsconfig.json ./ |
| COPY frontend/tailwind.config.js ./ |
| COPY frontend/postcss.config.js ./ |
| |
|
|
| |
| RUN npm run build |
|
|
| |
| FROM python:3.11-slim |
|
|
| |
| |
| RUN apt-get update && \ |
| apt-get install -y --no-install-recommends curl ca-certificates gnupg git && \ |
| curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ |
| apt-get install -y --no-install-recommends nodejs && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN useradd -m -u 1000 user |
|
|
| |
| USER user |
|
|
| |
| ENV HOME=/home/user \ |
| PATH=/home/user/.local/bin:$PATH \ |
| PYTHONUNBUFFERED=1 |
|
|
| |
| WORKDIR $HOME/app |
|
|
| |
| COPY --chown=user:user requirements.txt . |
| RUN pip install --no-cache-dir --upgrade pip && \ |
| pip install --no-cache-dir -r requirements.txt |
|
|
| |
| COPY --chown=user:user backend_api.py . |
| COPY --chown=user:user backend_models.py . |
| COPY --chown=user:user backend_docs_manager.py . |
| COPY --chown=user:user backend_prompts.py . |
| COPY --chown=user:user backend_parsers.py . |
| COPY --chown=user:user backend_deploy.py . |
| COPY --chown=user:user backend_search_replace.py . |
| COPY --chown=user:user project_importer.py . |
|
|
| |
| COPY --chown=user:user --from=frontend-builder /build/.next ./frontend/.next |
| COPY --chown=user:user --from=frontend-builder /build/public ./frontend/public |
| COPY --chown=user:user --from=frontend-builder /build/package*.json ./frontend/ |
| COPY --chown=user:user --from=frontend-builder /build/next.config.js ./frontend/ |
| COPY --chown=user:user --from=frontend-builder /build/node_modules ./frontend/node_modules |
|
|
| |
| |
| |
| ENV BACKEND_HOST=http://localhost:8000 \ |
| PORT=7860 |
|
|
| |
| |
| RUN echo '#!/bin/bash\n\ |
| set -e\n\ |
| \n\ |
| echo "🚀 Starting AnyCoder Docker Space..."\n\ |
| \n\ |
| # Start backend on port 8000 in background\n\ |
| echo "📡 Starting FastAPI backend on port 8000..."\n\ |
| cd $HOME/app\n\ |
| uvicorn backend_api:app --host 0.0.0.0 --port 8000 &\n\ |
| BACKEND_PID=$!\n\ |
| \n\ |
| # Wait for backend to be ready\n\ |
| echo "⏳ Waiting for backend to start..."\n\ |
| sleep 5\n\ |
| \n\ |
| # Start frontend on port 7860 (HF Spaces exposed port)\n\ |
| echo "🎨 Starting Next.js frontend on port 7860..."\n\ |
| cd $HOME/app/frontend\n\ |
| PORT=7860 BACKEND_HOST=http://localhost:8000 npm start\n\ |
| ' > $HOME/app/start.sh && chmod +x $HOME/app/start.sh |
|
|
| |
| EXPOSE 7860 |
|
|
| |
| CMD ["./start.sh"] |
|
|
|
|