mirror of
https://github.com/run-llama/workflows-py.git
synced 2026-07-18 16:14:58 -04:00
118 lines
4.2 KiB
Docker
118 lines
4.2 KiB
Docker
# Base stage with common dependencies
|
|
FROM python:3.12-slim AS base
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.7.20 /uv /uvx /bin/
|
|
|
|
# Create a non-root user
|
|
RUN groupadd --gid 1001 appgroup && \
|
|
useradd --uid 1001 --gid appgroup --shell /bin/bash --create-home appuser
|
|
|
|
# Create data directory and set permissions
|
|
RUN mkdir -p /app && chown -R appuser:appgroup /app
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy workspace configuration files
|
|
COPY pyproject.toml uv.lock README.md ./
|
|
|
|
ENV PATH=/app/.venv/bin:$PATH
|
|
|
|
|
|
##############################################################################
|
|
##############################################################################
|
|
############################## CONTROL PLANE #################################
|
|
##############################################################################
|
|
##############################################################################
|
|
|
|
##############################################################################
|
|
### Control Plane - BUILDER ###
|
|
##############################################################################
|
|
#
|
|
# pulls in all packages, and installs as non-editable
|
|
FROM base AS controlplane-builder
|
|
|
|
ARG PACKAGE_NAME=llama-agents-control-plane
|
|
|
|
# installs the 3rd party deps for the package
|
|
RUN uv sync --frozen --no-dev --package $PACKAGE_NAME --no-install-workspace
|
|
# Copy the 1st party deps
|
|
COPY packages/ packages/
|
|
|
|
# Now install the 1st party deps into the venv (non-editable)
|
|
RUN uv sync --frozen --no-dev --package $PACKAGE_NAME --no-editable
|
|
|
|
##############################################################################
|
|
### Control Plane - RUNNER ###
|
|
##############################################################################
|
|
|
|
FROM base AS controlplane
|
|
|
|
# Copy the builder stage
|
|
COPY --from=controlplane-builder /app/.venv /app/.venv
|
|
|
|
USER appuser
|
|
|
|
# Expose ports
|
|
EXPOSE 8000 8001
|
|
|
|
# Production command without reload
|
|
CMD ["python", "-m", "llama_agents.control_plane.main", "--host", "0.0.0.0", "--manage-api-port", "8000", "--build-api-port", "8001", "--log-level", "info", "--log-format", "json"]
|
|
|
|
|
|
|
|
##############################################################################
|
|
##############################################################################
|
|
################################# APP SERVER #################################
|
|
##############################################################################
|
|
##############################################################################
|
|
|
|
|
|
##############################################################################
|
|
### App Server - BUILDER ###
|
|
##############################################################################
|
|
#
|
|
# pulls in all packages, and installs as non-editable
|
|
FROM base AS appserver-builder
|
|
|
|
ARG PACKAGE_NAME=llama-agents-appserver
|
|
|
|
# install to system python. Makes things easier for the cloned repo to "inherit" the appserver dependencies
|
|
# installs the 3rd party deps for the package
|
|
RUN uv sync --frozen --no-dev --package $PACKAGE_NAME --no-install-workspace
|
|
# Copy the 1st party deps
|
|
COPY packages/ packages/
|
|
|
|
# Now install the 1st party deps into the venv (non-editable)
|
|
RUN uv sync --frozen --no-dev --package $PACKAGE_NAME --no-editable
|
|
RUN uv build --package $PACKAGE_NAME --sdist
|
|
RUN uv build --package llama-agents-core --sdist
|
|
|
|
##############################################################################
|
|
### App Server - RUNNER ###
|
|
##############################################################################
|
|
|
|
FROM base AS appserver
|
|
|
|
# Install Node.js, pnpm, and git for bootstrap-time git+https dependencies.
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
curl \
|
|
&& curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
|
&& apt-get install -y nodejs \
|
|
&& corepack enable \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy the builder stage
|
|
COPY --from=appserver-builder /app/.venv /app/.venv
|
|
COPY --from=appserver-builder /app/dist/ /app/dist
|
|
ENV LLAMA_DEPLOY_BOOTSTRAP_SDISTS=/app/dist/
|
|
|
|
USER appuser
|
|
|
|
ENV LLAMA_DEPLOY_APISERVER_PORT=8080
|
|
ENV LLAMA_DEPLOY_APISERVER_HOST=0.0.0.0
|
|
|
|
# Expose ports
|
|
EXPOSE 8080
|