Spaces:
Sleeping
Sleeping
| # Copyright (c) Meta Platforms, Inc. and affiliates. | |
| # All rights reserved. | |
| # | |
| # This source code is licensed under the BSD-style license found in the | |
| # LICENSE file in the root directory of this source tree. | |
| # | |
| # OpenEnv Base Image | |
| # | |
| # This is the standard base image for all OpenEnv environment servers. | |
| # It includes the minimal dependencies needed to run HTTP environment servers | |
| # and uv for fast dependency management. | |
| # | |
| # Build from repo root: docker build -t openenv-base:latest -f src/openenv/core/containers/images/Dockerfile . | |
| # Tag: docker tag openenv-base:latest openenv-base:0.2.0 | |
| # | |
| FROM ghcr.io/astral-sh/uv:0.5.27-python3.11-bookworm-slim AS builder | |
| # Set working directory | |
| WORKDIR /app | |
| # Copy core pyproject.toml and lockfile for dependency installation | |
| COPY pyproject.toml uv.lock* ./ | |
| # Install core dependencies using uv with cache mount | |
| RUN --mount=type=cache,target=/root/.cache/uv \ | |
| uv pip install --system -r pyproject.toml | |
| # Final runtime stage | |
| FROM python:3.11-slim | |
| # Set metadata | |
| LABEL maintainer="OpenEnv Team" | |
| LABEL description="Base image for OpenEnv based environment servers with uv" | |
| LABEL version="0.2.0" | |
| # Install system dependencies | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| curl \ | |
| ca-certificates \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Copy uv from builder | |
| COPY --from=builder /usr/local/bin/uv /usr/local/bin/uvx /usr/local/bin/ | |
| # Copy installed Python packages from builder | |
| COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages | |
| # Copy console scripts installed by pip (uvicorn, fastapi, etc.) | |
| COPY --from=builder /usr/local/bin/uvicorn /usr/local/bin/fastapi /usr/local/bin/ | |
| # Set working directory | |
| WORKDIR /app | |
| # Default environment variables | |
| ENV PYTHONPATH=/app/src | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV UV_SYSTEM_PYTHON=1 | |
| # Default expose port (can be overridden) | |
| EXPOSE 8000 | |
| # Note: CMD should be specified in child Dockerfiles | |