burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
42cc6d2 verified
version: '3.8'
# Docker Compose configuration for Android Environment
#
# This file enables easy deployment of multiple Android emulator instances
# for large-scale parallel training.
#
# Usage:
# # Single instance
# docker-compose up
#
# # Scale to 10 instances
# docker-compose up --scale android-env=10
#
# # With GPU nodes
# docker-compose -f docker-compose.yml -f docker-compose.hpc.yml up
services:
# Main Android environment service
android-env:
build:
context: ../../..
dockerfile: src/envs/android_env/server/Dockerfile
args:
BASE_IMAGE: openenv-base:latest
image: android-env:latest
# Environment configuration
environment:
# Required
- ANDROID_AVD_NAME=${ANDROID_AVD_NAME:-default_pixel_6}
- ANDROID_TASK_PATH=${ANDROID_TASK_PATH:-/workspace/tasks/calculator_basic.textproto}
# Optional
- ANDROID_ADB_PATH=${ANDROID_ADB_PATH:-/opt/android-sdk/platform-tools/adb}
- ANDROID_EMULATOR_PATH=${ANDROID_EMULATOR_PATH:-/opt/android-sdk/emulator/emulator}
- ANDROID_AVD_HOME=${ANDROID_AVD_HOME:-/root/.android/avd}
- ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-/opt/android-sdk}
- ANDROID_RUN_HEADLESS=${ANDROID_RUN_HEADLESS:-true}
- ANDROID_IMAGE_FORMAT=${ANDROID_IMAGE_FORMAT:-JPEG}
- ANDROID_IMAGE_QUALITY=${ANDROID_IMAGE_QUALITY:-85}
# Port mapping
ports:
- "8000-8099:8000" # Allow port range for scaling
# Volume mounts
volumes:
# Mount tasks directory
- ./examples/tasks:/workspace/tasks:ro
# Mount apps directory (for custom APKs)
- ${ANDROID_APPS_DIR:-./examples/apps}:/workspace/apps:ro
# Optional: Persist AVD data
# - android-avd-data:/root/.android/avd
# Device access for KVM hardware acceleration
devices:
- /dev/kvm:/dev/kvm
# Resource limits
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
# Restart policy
restart: unless-stopped
# Health check
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s # Emulator takes time to boot
# Logging
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Optional: Uncomment to persist AVD data across container restarts
# volumes:
# android-avd-data:
# driver: local
networks:
default:
driver: bridge