|
|
|
|
|
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"] |