myenv / server /Dockerfile
zkwentz's picture
Upload folder using huggingface_hub
7b3bda1 verified
# 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.
# Multi-stage build using openenv-base
# Build from repo root: docker build -t myenv_env:latest -f src/envs/myenv_env/server/Dockerfile .
ARG BASE_IMAGE=openenv-base:latest
FROM ${BASE_IMAGE} AS builder
WORKDIR /app
# Copy core module (needed by myenv_env)
COPY src/core /app/src/core
# Copy environment
COPY src/envs/myenv_env /app/src/envs/myenv_env
# Install dependencies using uv sync
WORKDIR /app/src/envs/myenv_env
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --locked --no-install-project --no-editable
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --locked --no-editable
# Final runtime stage
FROM ${BASE_IMAGE}
WORKDIR /app
# Copy core module
COPY --from=builder /app/src/core /app/src/core
# Copy the virtual environment from builder
COPY --from=builder /app/src/envs/myenv_env/.venv /app/.venv
# Copy the environment code
COPY --from=builder /app/src/envs/myenv_env /app/src/envs/myenv_env
# Set PATH to use the virtual environment
ENV PATH="/app/.venv/bin:$PATH"
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
ENV ENABLE_WEB_INTERFACE=true
CMD curl -f http://localhost:8000/health || exit 1
# Run the FastAPI server
CMD ["uvicorn", "envs.myenv_env.server.app:app", "--host", "0.0.0.0", "--port", "8000"]