Spaces:
Runtime error
Runtime error
OpenEnv Base Image
Standard base image for all OpenEnv environment servers.
What's Included
| Layer | Size | Contents |
|---|---|---|
| python:3.11-slim | 200 MB | Base Python runtime |
| + Dependencies | 100 MB | FastAPI, uvicorn, requests |
| Total | ~300 MB | Ready for environment servers |
Image Sizes
openenv-base:latest 300 MB (python + fastapi + uvicorn)
echo-env:latest 500 MB (python + fastapi + uvicorn + app) coding-env:latest 520 MB (python + fastapi + uvicorn + app + tools) another-env:latest 510 MB (python + fastapi + uvicorn + app)
Total: 1.5 GB (with lots of duplication)
### With Base Images (✅ Solution)
openenv-base:latest 300 MB (python + fastapi + uvicorn) echo-env:latest 50 MB (app only, uses base) coding-env:latest 70 MB (app + tools, uses base) another-env:latest 45 MB (app only, uses base)
Total: 465 MB (base shared, minimal duplication)
## Building the Base Image
```bash
# From project root
docker build -t openenv-base:latest -f src/core/containers/images/Dockerfile .
Usage in Environment Dockerfiles
Each environment Dockerfile should start with:
FROM openenv-base:latest
# Copy only environment-specific files
COPY src/core/ /app/src/core/
COPY src/envs/my_env/ /app/src/envs/my_env/
# Run the server
CMD ["uvicorn", "envs.my_env.server.app:app", "--host", "0.0.0.0", "--port", "8000"]
Base Image Contents
- Python 3.11-slim
- FastAPI >= 0.104.0
- Uvicorn >= 0.24.0
- Requests >= 2.25.0
- curl (for health checks)
Example: Building Echo Environment
# Step 1: Build base image (do this once)
docker build -t openenv-base:latest -f src/core/containers/images/Dockerfile .
# Step 2: Build echo environment (uses base)
docker build -t echo-env:latest -f src/envs/echo_env/server/Dockerfile .
# Step 3: Run echo environment
docker run -p 8000:8000 echo-env:latest
Updating the Base
When dependencies need updating:
- Update
src/core/containers/images/Dockerfile - Rebuild base image
- Rebuild all environment images (they'll use new base)
# Update base
docker build -t openenv-base:latest -f src/core/containers/images/Dockerfile .
# Rebuild environments (they automatically use new base)
docker build -t echo-env:latest -f src/envs/echo_env/server/Dockerfile .