| |
| FROM python:3.12 AS builder |
|
|
| WORKDIR /build |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| build-essential \ |
| && rm -rf /var/lib/apt/lists/* \ |
| && pip install --no-cache-dir uv |
|
|
| |
| COPY python/pyproject.toml . |
|
|
| |
| RUN uv venv /venv && \ |
| . /venv/bin/activate && \ |
| uv pip install --group server --group mcp --group agents |
|
|
| |
| COPY scripts/cache_offline_packages.py scripts/ |
| RUN python scripts/cache_offline_packages.py --output /app/offline_wheels |
|
|
| |
|
|
| |
| FROM python:3.12-slim |
|
|
| WORKDIR /app |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| git \ |
| wget \ |
| ca-certificates \ |
| fonts-liberation \ |
| libasound2 \ |
| libatk-bridge2.0-0 \ |
| libatk1.0-0 \ |
| libatspi2.0-0 \ |
| libcups2 \ |
| libdbus-1-3 \ |
| libdrm2 \ |
| libgbm1 \ |
| libgtk-3-0 \ |
| libnspr4 \ |
| libnss3 \ |
| libwayland-client0 \ |
| libxcomposite1 \ |
| libxdamage1 \ |
| libxfixes3 \ |
| libxkbcommon0 \ |
| libxrandr2 \ |
| xdg-utils \ |
| fonts-noto-cjk \ |
| fontconfig \ |
| && apt-get clean \ |
| && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
|
|
| |
| COPY --from=builder /venv /venv |
| COPY --from=builder /app/offline_wheels /app/offline_wheels |
|
|
| |
| ENV PATH=/venv/bin:$PATH |
| ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright |
| RUN playwright install chromium |
|
|
| |
| COPY python/src/ src/ |
| COPY python/tests/ tests/ |
| COPY migration/ migration/ |
|
|
| |
| ENV PYTHONPATH="/app/src:/app:$PYTHONPATH" |
| ENV PYTHONUNBUFFERED=1 |
| ENV PYTHONDONTWRITEBYTECODE=1 |
| ENV PATH="/venv/bin:$PATH" |
| ENV ARCHON_SERVER_PORT=8181 |
| ENV ARCHON_MCP_PORT=8051 |
| ENV ARCHON_AGENTS_PORT=8052 |
| ENV ARCHON_SERVER_HOST=127.0.0.1 |
|
|
| |
| EXPOSE 8181 |
|
|
| |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ |
| CMD sh -c "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:${ARCHON_SERVER_PORT}/health')\"" |
|
|
| |
| COPY python/start_all.sh /app/start_all.sh |
| COPY python/docker-entrypoint-mcp.sh /app/docker-entrypoint-mcp.sh |
| COPY python/docker-entrypoint-agents.sh /app/docker-entrypoint-agents.sh |
| RUN chmod -R 777 /app |
|
|
| |
| CMD ["/app/start_all.sh"] |