| |
| FROM node:18 AS frontend-builder |
|
|
| |
| WORKDIR /app |
| RUN git clone https://github.com/stitionai/devika.git . |
| WORKDIR /app/ui |
|
|
| |
| RUN npm install |
| RUN npm run build |
|
|
| |
| FROM python:3.10-slim AS backend-builder |
|
|
| WORKDIR /app |
|
|
| |
| COPY --from=frontend-builder /app /app |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| git \ |
| gcc \ |
| g++ \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN pip install uv && \ |
| uv venv && \ |
| . /app/.venv/bin/activate && \ |
| uv pip install -r /app/requirements.txt && \ |
| playwright install --with-deps |
|
|
| |
| FROM python:3.10-slim |
|
|
| WORKDIR /app |
|
|
| |
| COPY --from=backend-builder /app /app |
| COPY --from=backend-builder /root/.cache/ms-playwright /root/.cache/ms-playwright |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| bun \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN npm install -g serve |
|
|
| |
| |
| |
| EXPOSE 1337 7860 |
|
|
| |
| RUN echo '#!/bin/bash\n\ |
| # Activate Python virtual environment\n\ |
| . /app/.venv/bin/activate\n\ |
| \n\ |
| # Start backend\n\ |
| python /app/devika.py &\n\ |
| \n\ |
| # Start frontend on port 7860\n\ |
| cd /app/ui && serve -s build -l 7860\n\ |
| \n\ |
| # Keep container running\n\ |
| wait' > /app/start.sh && chmod +x /app/start.sh |
|
|
| |
| RUN if [ ! -f /app/config.toml ]; then \ |
| touch /app/config.toml && \ |
| echo "[settings]" >> /app/config.toml && \ |
| echo "SQLITE_DB = \"/app/db/devika.db\"" >> /app/config.toml && \ |
| echo "SCREENSHOTS_DIR = \"/app/screenshots\"" >> /app/config.toml && \ |
| echo "PDFS_DIR = \"/app/pdfs\"" >> /app/config.toml && \ |
| echo "PROJECTS_DIR = \"/app/projects\"" >> /app/config.toml && \ |
| echo "LOGS_DIR = \"/app/logs\"" >> /app/config.toml && \ |
| echo "REPOS_DIR = \"/app/repos\"" >> /app/config.toml; \ |
| fi |
|
|
| |
| RUN mkdir -p /app/db /app/screenshots /app/pdfs /app/projects /app/logs /app/repos |
|
|
| CMD ["/app/start.sh"] |